Tuesday, October 16, 2012

building custom tags in html5 and javascript, part 1

If you've had the chance to work with Facebook's Social Plugins, you've likely come across the option to embed their widgets using XFBML. They offer a similar "HTML5 compatible" option, but I tend to think the custom, name-spaced tags option is neat. So, let's explore one way to do that.

As an example of the usefulness, I'll use my recently completed book of small potatoes (wisdom of the ancients) from thepointless.com. With each wise guy quote, we see markup in the following format, which renders a voting widget, with the help of some fancy JavaScript:

<tpdc:voter method='/ajax/pointlisting_vote' record_id='37' vote='1'
 fb_like_url='http://www.thepointless.com/pointlistings?id=37'>
  <tpdc:vote>vote<tpdc:vote>
  <tpdc:unvote>unvote<tpdc:unvote>
  +<tpdc:count>1<tpdc:count>
<tpdc:voter>


(Rather the post the full script that does the magic here, I'll be using some trivial simplified JavaScript here for conciseness. You can take a peek at it in action if you're interested.)

To prevent Internet Explorers 7 and 8 from giving us the silent treatment come script-time, our custom tags need to live in a namespace. (Other browsers, as far as I know, ignore the namespace altogether.) And the namespace must be defined in the opening html tag:

<html xmlns:tpdc="http://www.thepointless.com/ns/tpdc">

Now, as you might imagine, a little JavaScript magic is needed to work with these nodes gracefully. And although a touch hacking, it may not be as hackish as you'd expect! As seen on the thepointless.com, here is the function we use to grab these nodes and "import" their attributes correctly:

var getNodes = function(n, q) {
    try {
        // i think "r" stands for "return" here.

        // in any event, our first step is to try to find the nodes
        // by their full names -- that is, with the namespace.
        var r = n['getElementsByTagName'](q);
        if (r.length < 1) {

            // ... and if we don't find anything, omit the namespace,
            // if present.
            var p = q.split(":");
            if (p.length == 2) {
                r = n['getElementsByTagName'](p[1]);
            }
        }

        // import attributes, for each node
        for (var i = 0; i < r.length; i++) {


            // for each attribute in r[i]

            // first, make sure we're not attempting to RE-import attributes.
            var ri = r[i];

            if (!ri.__attributes_imported) {

                // so, we basically iterate through each attribute and
                // "re-attach" it to the node directly. seems silly, but
                // it allows our scripts to operate on these attributes
                // later much more naturally.
                for (var ai = 0; ai < ri.attributes.length; ai++) {
                    var att = ri.attributes[ai];
                    if (!ri[att.name]) {
                        ri[att.name] = att.value;
                    }
                }
                ri.__attributes_imported = true;
            }
        }

        // and finally, give that list of nodes back.
        return r;
    } catch (e) {
        return [];
    }
} // getNodes()


This getNodes() implementation works in recent versions of Chrome, Firefox, Safari, and IE7+ (not tested in IE6). One-off use of the function works similarly to (but not exactly like) the normal getElementByTagName() function. So, if we want to work with all the tpdc:voter nodes, we could do this:

// get an array of tpdc:voter nodes.
var voterNodes = getNodes(document, "tpcd:voter");

// for each one, let's add an onclick event that simply displays
// the method attribute.
for (var i = 0; i < voterNodes.length; i++) {

  // to be clear, the "this" here is the node itself
  voterNodes[i].onclick = function() { alert(this.method); }
}


Pretty simple. And working with child nodes is just as easy. Suppose we want to loop through all the tpdc:voter nodes and make each tpdc:count node with a value of 10 or more bold. Now, with this trivial example, we could do this globally, like so:

// get all the tpdc:count nodes.
var countNodes = getNodes(document, "tpdc:count");

// make each one with an innerHTML value >= 10 bold
for (var i = 0; i < countNodes.length; i++) {
  if (parseInt(countNodes[i].innerHTML) >= 10) {
    countNodes[i].style.fontWeight = 'bold';
  }
}


Or, we can work within the context of a single tpdc:voter node, as we might in a voter node's class method. A trivial example again, but this works as expected:

// assume we already have a tpdc:voter node, voterNode
var countChildren = getNodes(voterNode, 'tpdc:count');
// act on all tpdc:count nodes found.
for (var ci = 0; ci < countChildren.length; ci++) {
  if (parseInt(countChildren[ci].innerHTML) >= 10) {
    countChildren[ci].style.fontWeight = 'bold';
  }
}


Neat.

But, we're not done yet. What we really want is the ability to treat these custom tags like instances of a real class. And we can! We can define a namespace (empty object) with some classes (functions) and bind them semi-automagically to the DOM nodes.

Let's consider a TPDC namespace with two very simple classes:

// the namespace
var TPDC = {};


// class Simple
TPDC.Simple = function() {
  // we can do things at object "instantiation" time
  this.innerHTML = "Simple";
} // class TPDC.Simple()

// class LessSimple
TPDC.LessSimple = function() {

  // we can also define object methods
  this.makeSimple = function() {
    this.innerHTML = "Simple";
  } // TPDC.LessSimple.makeSimple()

  this.onClick = function() {
    this.makeSimple();
  } // TPDC.LessSimple.onClick()

  this.innerHTML = "Less Simple";
} // class TPDC.LessSimple()


Simple. And so is binding our whole TPDC "namespace" to the appropriate document nodes:

for (var k in TPDC) {
  var tpdc_nodes = getNodes(document, 'tpdc:' + k);
  for (var i = 0; i < tpdc_nodes.length; i++) {
    TPDC[k].apply(tpdc_nodes[i]);
  }
}


And, if we want to stuff our getNodes() function stuffed neatly away in a shared library, we can also add a convenient little binder method:

var BindNS = function(ns_name, parent) {
  // "find" the namespace within its parent, given its name
  var p = parent || this;
  var ns = p[ns_name];


  // apply the class constructors to the document nodes
  for (var k in ns) {
    var ns_nodes = getNodes(document, ns_name.toLowerCase() + ":" + k.toLowerCase());
    for (var i = 0; i < ns_nodes.length; i++) {
      ns[k].apply(ns_nodes[i]);
    }
  }
} // BindNS()


And then bind our simple TPDC class with one line:

BindNS('TPDC');

And at this point, any tags in our document that look like these will operate as though they're instances of our Simple and LessSimple classes:

<tpdc:simple>weeeeee...</tpdc:simple>
<tpdc:lesssimple>...eeeeee!</tpdc:lesssimple>


They also operate as generic DOM nodes too, of course. Your JavaScript classes are, in many respects, subclasses of the Node class.

Two things to remember though:

1. Most browsers ignore the namespace. So, this approach doesn't grant you an ability, so far as I know, to create namespaces with identical class names. You can work around this by including the namespace again as a prefix in your class names if you need to.

  and

2. It's invalid markup! It's served up with a text/html content type and an HTML5 doctype, which explicitly forbids tag namespaces. So, you might even call it grossly invalid! That said, of all the custom tag variations I tested, this syntax actually provided the most consistent behavior.

In any event, I like the way this works. I can simplify and minimize both my markup and my script using this approach. And I definitely plan on playing with it more. One thing I'm pondering is an elegant way to automagically attach custom child tags to custom-tag parents in a helpful and meaningful way.

So, if anyone has any thoughts on that (or any of this), I'd be interested in your feedback.

And of course, I encourage you to check out the working examples of this concept at thepointless.com, starting with the book of small potatoes!

Wee!

UPDATE: There's now a building custom tags in html5 and javascript, part 2!

218 comments:

  1. This is an awesome post. Really very informative and creative contents. This concept is a good way to enhance knowledge. I like it and help me to development very well. Thank you for this brief explanation and very nice information. Well, got good knowledge.
    WordPress development company in Chennai

    ReplyDelete
  2. become a new player in the casino good top online casinos I understood, I understood that on this site, luck will smile at me

    ReplyDelete
  3. Awesome article. It is so detailed and well formatted that i enjoyed reading it as well as get some new information too..
    Oracle DBA Online Training

    ReplyDelete
  4. The knowledge of technology you have been sharing thorough this post is very much helpful to develop new idea. here by i also want to share this.
    msbi online training

    ReplyDelete
  5. Resources like the one you mentioned here will be very useful to me ! I will post a link to this page on my blog. I am sure my visitors will find that very useful

    Tableau online training

    ReplyDelete
  6. I appreciate your efforts because it conveys the message of what you are trying to say. It's a great skill to make even the person who doesn't know about the subject could able to understand the subject . Your blogs are understandable and also elaborately described. I hope to read more and more interesting articles from your blog. All the best.
    msbi online training

    ReplyDelete
  7. Thanks for such a great article here. I was searching for something like this for quite a long time and at last I’ve found it on your blog. It was definitely interesting for me to read about their market situation nowadays.
    Sql server dba online training

    ReplyDelete
  8. Thank you for benefiting from time to focus on this kind of, I feel firmly about it and also really like comprehending far more with this particular subject matter. In case doable, when you get know-how, is it possible to thoughts modernizing your site together with far more details? It’s extremely useful to me.

    ReactJS Online Training

    ReplyDelete
  9. Thanks for sharing Great info… learning driving from experienced instructors help you to learn driving very fast. Driving School Melbourne

    ReplyDelete

  10. When you feel any kind of body pain, it is best if you go to the doctor for treating it. Sometimes body pain can be the symptom of some serious disease. Sometimes body pain attacks us suddenly because of which you may not able to get the help of the doctor. In those situations, to get quick and effective pain relief, you can take the help of painkillers though they cannot cure your pain. As your painkiller, choose Tramadol 50 mg which is very effective. This painkiller is available in the market with the name of Ultram. To use this painkiller, you can get it easily. Buy Tramadol online and get this painkiller at an affordable price.
    Buy Tramadol online

    ReplyDelete
  11. Howdy! I could have sworn I’ve been to this blog before but after looking at many of the posts I realized it’s new to me. Regardless, I’m certainly delighted I discovered it and I’ll be book-marking it and checking back often!
    Tech geek

    ReplyDelete
  12. Thanks for sharing such a great information. Its really nice and informative sql training
    and ms sql server tutorial.

    ReplyDelete

  13. This post is really nice and informative. The explanation given is really comprehensive and informative. I want to share some information about the best oracle dba training and weblogic server tutorial training videos. Thank you .Hoping more articles from you.

    ReplyDelete
  14. After I initially commented I seem to have clicked on the -Notify me when new comments are added- checkbox and from now on each time a comment is added information I receive 4 emails with the same comment. There has to be a means you can remove me from that service? Thanks a lot!

    ReplyDelete
  15. This web site truly has all the information and facts I needed concerning this web site subject and didn’t know who to ask.

    ReplyDelete
  16. Great technology web site you have got here.. It’s hard to find quality writing like yours these days. I really appreciate individuals like you! Take care!!

    ReplyDelete
  17. Good article! I found some useful educational information in your blog about React Js, it was awesome to read, Java training in chennai thanks for sharing this great content to my vision
    Java training in chennai | Java training in annanagar | Java training in omr | Java training in porur | Java training in tambaram | Java training in velachery

    ReplyDelete
  18. Paid marketing can be an excellent way to increase your visibility and conversion rates. Resurge Pills

    ReplyDelete
  19. Nice article very helpful and informative thanks for sharing this information Full post
    Jio Missed call alert

    ReplyDelete
  20. After reading your article I was amazed. I know that you explain it very well. And I hope that other readers will also experience how I feel after reading your article.

    vmware training in bangalore

    vmware courses in bangalore

    vmware classes in bangalore

    vmware training institute in bangalore

    vmware course syllabus

    best vmware training

    vmware training centers

    ReplyDelete
  21. Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot.

    Tableau Online Training

    Tableau Classes Online

    Tableau Training Online

    Online Tableau Course

    Tableau Course Online

    ReplyDelete
  22. This is excellent information. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me.

    Microsoft Online Training

    Microsoft Classes Online

    Microsoft Training Online

    Online Microsoft Course

    Microsoft Course Online

    ReplyDelete
  23. I read this article. I think You put a lot of effort to create this article. I appreciate your work. Van Helsing Coat

    ReplyDelete
  24. The great website and information shared are also very appreciable.
    terror billy jacket

    ReplyDelete
  25. Good Post! , it was so good to read and useful to improve my knowledge as an updated one, keep blogging.After seeing your article I want to say that also a well-written article with some very good information which is very useful for the readers....thanks for sharing it and do share more posts like this.
    https://www.3ritechnologies.com/course/microsoft-azure-training-in-pune/

    ReplyDelete

  26. Wow. That is so elegant and logical and clearly explained. Brilliantly goes through what could be a complex process and makes it obvious.I want to refer about the best msbi training in bangalore

    ReplyDelete
  27. Awesome blog with unique content and knowledgeable information thanks for sharing.

    typeerror nonetype object is not subscriptable

    ReplyDelete
  28. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously
    in their life, he/she can earn his living by doing blogging.Thank you for this article.
    tibco sportfire online training
    best tibco sportfire online training
    top tibco sportfire online training

    ReplyDelete
  29. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously
    in their life, he/she can earn his living by doing blogging.Thank you for this article.
    tibco sportfire online training
    best tibco sportfire online training
    top tibco sportfire online training

    ReplyDelete
  30. Fantastic article with top quality information found very useful thanks for sharing
    Data Science Course in Hyderabad

    ReplyDelete


  31. I am reading your post from the beginning, it was so interesting to read & I feel thanks to you for posting such a good blog, keep updates regularly.I want to share about tibco training .

    ReplyDelete
  32. Top quality blog with very informative information found very useful thanks for sharing.
    Data Analytics Course Online

    ReplyDelete
  33. Our the purpose is to share the reviews about the latest Jackets,Coats and Vests also share the related Movies,Gaming, Casual,Faux Leather and Leather materials available Billy Butcher Coat

    ReplyDelete
  34. Nice Information Your first-class knowledge of this great job can become a suitable foundation for these people. I did some research on the subject and found that almost everyone will agree with your blog.
    Cyber Security Course in Bangalore

    ReplyDelete
  35. Writing in style and getting good compliments on the article is hard enough, to be honest, but you did it so calmly and with such a great feeling and got the job done. This item is owned with style and I give it a nice compliment. Better!
    Cyber Security Training in Bangalore

    ReplyDelete
  36. I found Habit to be a transparent site, a social hub that is a conglomerate of buyers and sellers willing to offer digital advice online at a decent cost. PMP Training in Hyderabad

    ReplyDelete
  37. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously
    in their life, he/she can earn his living by doing blogging.Thank you for this article.
    best tibco sportfire online training

    ReplyDelete
  38. This post is great. I really admire your post. Your post was awesome. data science course in Hyderabad

    ReplyDelete
  39. I just want to say it`s wonderful blog.Photo editing company.

    ReplyDelete
  40. Thank you so much for shearing this type of post.
    This is very much helpful for me. Keep up for this type of good post.
    please visit us below
    data science training

    ReplyDelete
  41. Nice Blog !
    Here We are Specialist in Manufacturing of Movies, Gaming, Casual, Faux Leather Jackets, Coats And Vests See Hughie Campbell Jacket

    ReplyDelete
  42. SAP stands for Systems Applications and Products in Data Processing. SAP, by definition, is also the name of the ERP (Enterprise Resource Planning) software as well as the name of the company.
    tally training in chennai

    hadoop training in chennai

    sap training in chennai

    oracle training in chennai

    angular js training in chennai

    ReplyDelete
  43. In addition to educational software, Python is also a favored language for use in AI tasks. Because Python is a scripting language with rich text processing tools, module architecture, and syntax simplicity, data science course in india

    ReplyDelete
  44. Free software has two unique major problems that have influenced my design decisions, because often they are avoidable and can make software less robust, less usable, and harder to maintain. best Flask course

    ReplyDelete
  45. The Pomsky is a designer breed of dog that is a hybrid of the Pomeranian and the Siberian Husky. Adorable Pomsky puppies have attracted a lot of attention recently and made them one of the most popular breeds of 2017.
    Best Online Pet Adoption : Cavapoo Puppies For Sale : Australian Shepherd Puppies Below $200 : Available Maltipoo Puppies Online : Where To Buy Golden Retriever Puppies OnlineBest Online Adoption|Healthy Puppies for Sale|Cavapoo puppies for sale

    ReplyDelete
  46. I like to share my AWS Training in chennai from the best and experienced AWS cognex trained and become the expert in AWS training in Chennai

    ReplyDelete
  47. I have to search sites with relevant information ,This is a
    wonderful blog,These type of blog keeps the users interest in
    the website, i am impressed. thank you.
    Data Science Course in Bangalore

    ReplyDelete
  48. As always your articles do inspire me. Every single detail you have posted was great.
    data science in malaysia

    ReplyDelete
  49. This post is very simple to read and appreciate without leaving any details out. Great work!
    data scientist malaysia

    ReplyDelete
  50. Dr. Vivek Galani is a leading expert in skin and hair. At hair transplant clinic in Surat Skin Care, Cosmetic Laser, Hair Transplant & Slimming Center, Dr. Galani offers the most advanced cosmetic and dermatologic care treatments. The clinic uses advanced FUE methods to produce high-quality hair transplants.

    ReplyDelete
  51. This is my first time visit here. From the tremendous measures of comments on your articles.I deduce I am not only one having all the fulfillment legitimately here!
    data science courses in noida

    ReplyDelete
  52. I have bookmarked your site since this site contains important data in it. I am truly content with articles quality and introduction. Much obliged for keeping extraordinary stuff. I am a lot of grateful for this site.
    data scientist training and placement in hyderabad

    ReplyDelete
  53. Shreeja Health Care is leading manufacturer of Oil Making Machine. Shreeja Oil Extraction Machine is able to extractoil from various seeds like peanuts, Coconut, Sesame, Soybean, macadamia nuts, walnuts, sunflower seeds, vegetable seeds flaxseed et.

    ReplyDelete
  54. Very awesome!!! When I searched for this I found this website at the top of all blogs in search engines.
    Best Institute for Data Science in Hyderabad

    ReplyDelete
  55. best place to buy drivers license online buy bsc 3rd year time table driving license

    ReplyDelete

  56. Very awesome!!! When I searched for this I found this website at the top of all blogs in search engines.

    business analytics course

    ReplyDelete
  57. i am glad to discover this page : i have to thank you for the time i spent on this especially great reading !! i really liked each part and also bookmarked you for new information on your site.
    data science training in bangalore

    ReplyDelete

  58. That is nice article from you, this is informative stuff. Hope more articles from you . I also want to share some information about bw Training

    ReplyDelete
  59. i am glad to discover this page : i have to thank you for the time i spent on this especially great reading !! i really liked each part and also bookmarked you for new information on your site.
    data science courses in hyderabad

    ReplyDelete
  60. Online football betting i99club, one of the world's leading online gambling sites, provides the best prices in football betting
    เว็บแทงบอล


    Ufabet1688 online betting website UEFA Bet is a 100% legal website with all licenses
    ufabet


    UEFA football betting, casino, slots, lottery, direct website 1688, stable financial, 100% UFABET168
    ufa


    Fan wreath shop with free delivery, with pictures before-after sending with receipt.
    พวงหรีด


    Sticking to the COVID-19 situation: Arekorenavi.info
    โควิด


    Online Baccarat FOXZ24 Easy to apply, fast, deposit-withdraw 10 seconds with the system
    บาคาร่า

    ReplyDelete
  61. FOXZ88.NET online casino website Global standard 2020-2021
    คาสิโนออนไลน์


    Betting online gambling reminiscent of UFASCR.COM Baccarat.
    ufabet


    UFABET football betting website, the big brother of all UEFA networks, UFADNA, with an update The first modern system in 2021
    ufa


    Web football i99PRO online lottery casino apply today for free 5000 bonus
    เว็บบอล


    Kardinal Stick Siam - Relx a great promotion. Express delivery in 3 hours.
    relx

    ReplyDelete
  62. Online football betting i99club, one of the world's leading online gambling sites, provides the best prices in football betting
    เว็บแทงบอล


    Ufabet1688 online betting website UEFA Bet is a 100% legal website with all licenses
    ufabet


    UEFA football betting, casino, slots, lottery, direct website 1688, stable financial, 100% UFABET168
    ufa


    Fan wreath shop with free delivery, with pictures before-after sending with receipt.
    พวงหรีด


    Sticking to the COVID-19 situation: Arekorenavi.info
    โควิด


    Online Baccarat FOXZ24 Easy to apply, fast, deposit-withdraw 10 seconds with the system
    บาคาร่า

    ReplyDelete
  63. Movie-watching websites that are more than movie-watching websites Because we are the number 1 free movie site in Thailand for a long time, including new movies, Thai movies, Western movies, Asian movies, we have all kinds of ways for you Including new series Full of all stories without interstitial ads to keep annoying anymore. One place sa-movie.com.

    Android and IOS operating systems. Watch online movies, Thai movies, Western movies, Asian movies, Cartoon movies, Netflix Movie, Action Movies, Comedy Movies, Crime Movies, Drama Movies, Horror Movies, Adventure Movies, Crash Movies and still have many new movies to watch. You can watch for free anytime, anywhere 24 hours a day at see4k.com.


    GangManga read manga, read manga, read manga online for free, fast loading, clear images in HD quality, all titles, anywhere, anytime, on mobile, tablet, computer. Android and IOS operating systems. Read top comics, action dramas, comedy, adventure, horror and manga. New coming every day to watch many more. Can be read for free anytime anywhere 24 hours a day at gangmanga.com..

    It is no secret that football is among the most popular and widely watched sports. Everybody who likes football tries to find the best platform for free soccer streaming. So, what are the best free sports streaming sites? We are going to answer this question. On this page, you can find a detailed overview of the most widespread soccer streaming websites. Keep on reading and make the best choice for you live24th.me.

    ReplyDelete


  64. Very awesome!!! When I searched for this I found this website at the top of all blogs in search engines.

    Best Data Science courses in Hyderabad


    ReplyDelete
  65. I want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging enedevors.
    data science course fees in bangalore

    ReplyDelete
  66. Shreeja Health Care is leading manufacturer of Oil Maker Machine. Shreeja Oil Extraction Machine is able to extract oil from various seeds like peanuts, Coconut, Sesame, Soybean, macadamia nuts, walnuts, sunflower seeds, vegetable seeds flaxseed etc.

    ReplyDelete
  67. Highly appreciable regarding the uniqueness of the content. This perhaps makes the readers feels excited to get stick to the subject. Certainly, the learners would thank the blogger to come up with the innovative content which keeps the readers to be up to date to stand by the competition. Once again nice blog keep it up and keep sharing the content as always.

    data analytics courses in bangalore with placement

    ReplyDelete
  68. The content that I normally go through nowadays is not at all in parallel to what you have written. It has concurrently raised many questions that most readers have not yet considered.
    Data Science Training in Hyderabad
    Data Science Course in Hyderabad

    ReplyDelete
  69. Thanks for spending all your pleasant time to make such a Creative content for us. AWS Course in Chennai

    ReplyDelete
  70. Thank you, very useful tips. I recently planted some these plant to tiny front garden.

    here

    ReplyDelete
  71. Excellent post.I want to thank you for this informative read, I really appreciate sharing this great post.Keep up your work
    data scientist training in hyderabad

    ReplyDelete
  72. We are very thankful for share this informative post. Buy real leather jackets, Motogp Leather Suits & Motogp Leather Jackets with worldwide free shipping.
    Motogp Leather Suits
    Motogp Leather Jacket
    Sheepskin Jackets
    Shearling Jacket

    ReplyDelete
  73. I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoy every little bit of it and I have you bookmarked to check out new stuff you post.
    business analytics course

    ReplyDelete
  74. one fast brownIn case you are looking for a good site, UFA, UEFA Bet casino site. Which can be played as a thorough answer, in a position to answer Quality and Performance It's ideal to get a great deal of the issues. It can be something very punching and fascinating. Excellently, the items that UFABET football betting is absolutely nothing even with the practical experience of quality. Plus accessibility that are able to see final results It's a model that is very sharp and also different. Full of performance of creating wealth Attractiveness With the most beneficial opportunities it is quite nothing You will find opportunities and also probabilities for making profits. Quality and also somewhat diverse For people who have come to make use of the service excellently fox
    บาคาร่า
    สล็อต
    ufa
    แทงบอล

    ReplyDelete
  75. I want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging enedevors.
    data science training in chennai

    ReplyDelete
  76. This website and I conceive this internet site is really informative ! Keep on putting up!
    best data science course online

    ReplyDelete
  77. Great Information..

    https://localdrivingacademy.com.au/driving-school-frankston

    ReplyDelete
  78. Always so interesting to visit your site.What a great info, thank you for sharing. this will help me so much in my learning
    artificial intelligence course

    ReplyDelete
  79. Pretty section of content. I just stumbled upon your website and in accession capital to assert that I get in fact enjoyed account your blog posts. Any way I’ll be subscribing to your feeds and even I achievement you access consistently quickly. บาคาร่าออนไลน์

    ReplyDelete
  80. Keep you data more safe and accurate by the help of Fungible. Because they are company technology based and DPU™-based technology and solutions that will enable highly performant, efficient, reliable and secure data centers to be built at any scale.

    ReplyDelete
  81. I am looking for this informative post thanks for share it with me

    ReplyDelete
  82. Hello there! I simply wish to offer you a major approval for your incredible data you have here on this post. I will be returning to your site for all the more soon.best interiors

    ReplyDelete
  83. Thanks for posting the best information and the blog is very important.digital marketing institute in hyderabad

    ReplyDelete
  84. Amazing article,Surely, you must have done great research for this article. I learned a lot from it. Thanks for sharing this article.
    by cognex is the AWS Training in chennai

    ReplyDelete
  85. The leather jacket mens is not really a men’s staple. However, it can be a very personal piece that will follow you for years to come, provided you choose it clearly.
    MR.STYLES suppliers of leather Fashion Jackets,dauntless leather jacket,Harley Davidson Leather Jacket,Motorcycle Leather Jacket with custom design the best quality of Cowhide, Sheep, Lamb, And Goat Skins. Save your cash and enjoy the best quality. Best Men’s Leather Jackets with mr-styles.com

    ReplyDelete
  86. We will like to introduce our Firm as manufacturer and exporter of high quality Garments, Sports Wear Garments, school wear garments /blazer. We have gained excellent reputation among our clients worldwide. We are delivering our excellent quality American football Uniform, baseball uniform, soccer uniforms, track suits, hoddies, worldwide towards entire satisfaction of our valued customers.

    ReplyDelete
  87. Leather fashion jacket never runs out of style and if you’re looking for best articles regarding Harley Davidson leather Jackets, you’re just at the right place.
    JnJ is a registered firm that deals with all kinds of leather jackets, including motorbike racing suits, motorbike leather jackets and leather vests, leather gloves, for both men and women.

    ReplyDelete
  88. Established in 1997, PunjabStar had a clear focus, to be involved in the sporting and active lifestyle community by offering great custom Team Uniform and athletic Athletic Apparel. Our focus is making Sportswear we love and giving our customer a positive holistic experience through design to delivery.

    ReplyDelete
  89. I truly like you're composing style, incredible data, thankyou for posting.
    best data science institute in hyderabad

    ReplyDelete
  90. I am genuinely thankful to the holder of this web page who has shared this wonderful paragraph at at this place
    data scientist training and placement in hyderabad

    ReplyDelete
  91. Awesome article. I enjoyed reading your articles. this can be really a good scan for me. wanting forward to reading new articles. maintain the nice work!


    Data Science Training in Hyderabad

    ReplyDelete
  92. This is such a great post, and was thinking much the same myself. Another great update…

    Data Science Training in Hyderabad

    ReplyDelete
  93. B3 Bomber Jacket For Sale - Free Shipping and Best Deal
    Men consistently partial to skins and hides due to the fact the start of timethey utilized it to insure by themselves and safeguard them by your cold temperatures.
    Now shearling leather coats, Real Leather Bomber Jackets, Buy Harley Davidson Leather Motorcycle Jackets holds probably the best legacy , masculinity along with ruggedness to get a guys outer wear.

    ReplyDelete
  94. Well we really like to visit this site, many useful information we can get here.
    digital marketing courses in hyderabad with placement

    ReplyDelete
  95. I truly like you're composing style, incredible data, thankyou for posting.
    data science training

    ReplyDelete
  96. Having come across this site, I believe I will learn something new and great from your article. Its nice read and my lovely time spent worthy it. Thanks for a wonderful updates. Click on.- fugashua post utme past questions pdf

    ReplyDelete
  97. I was basically inspecting through the web filtering for certain data and ran over your blog. I am flabbergasted by the data that you have on this blog. It shows how well you welcome this subject. Bookmarked this page, will return for extra. data science course in jaipur

    ReplyDelete
  98. Your work is very good and I appreciate you and hopping for some more informative posts
    data science training

    ReplyDelete
  99. Thanks for writing in with such positive feedback about my post. I took a quick glance at it and couldn’t stop reading!
    Data Science Training in Hyderabad
    Data Science Course in Hyderabad

    ReplyDelete
  100. Goodness, so excellent and great post! A debt of gratitude is in order for offering a chance to peruse an incredible and fanciful blog. It gives me loads of joy and interest. A debt of gratitude is in order for sharing…

    Data Science Training in Hyderabad

    ReplyDelete
  101. Glad to chat your blog, I seem to be forward to more reliable articles and I think we all wish to thank so many good articles.
    AWS Training in Hyderabad
    AWS Course in Hyderabad

    ReplyDelete
  102. Extremely overall quite fascinating post. I was searching for this sort of data and delighted in perusing this one. Continue posting. A debt of gratitude is in order for sharing. data scientist course in delhi

    ReplyDelete

  103. Hey friend, it is very well written article, thank you for the valuable and useful information you provide in this post. Keep up the good work! FYI, please check these depression, stress and anxiety related articles:
    fino partner , The Alchemist book review

    ReplyDelete
  104. Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!
    data science training in malaysia

    ReplyDelete
  105. Hi there, after reading this remarkable paragraph i am
    too happy to share my experience here with colleagues. 대구오피


    ReplyDelete
  106. Awesome blog. I enjoyed reading your articles. This is truly a great read for me. I have bookmarked it and I am looking forward to reading new articles. Motogp suits

    ReplyDelete
  107. Thank you for the information it helps me a lot we are lokking forward for more
    AI Training in Hyderabad

    ReplyDelete
  108. I am stunned by the information that you have on this blog. It shows how well you fathom this subject.
    data scientist certification malaysia

    ReplyDelete
  109. Really Nice Information It's Very Helpful All courses Checkout Here.
    ai courses aurangabad

    ReplyDelete
  110. This comment has been removed by the author.

    ReplyDelete
  111. Fantastic article I ought to say and thanks to the info. Instruction is absolutely a sticky topic. But remains one of the top issues of the time. I love your article and look forward to more.
    Data Science Course in Bangalore

    ReplyDelete
  112. Nice post brother, I have been surfing online more than 3 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. In my view, if all web owners and bloggers made good content as you did, the internet will be much more useful than ever before. There is certainly a lot to know about this issue.I love all of the points you’ve made. I am sure this post has touched all the internet viewers.
    mua vé máy bay từ mỹ về việt nam hãng eva

    mua vé máy bay từ đức về việt nam

    giá vé máy bay từ anh về hà nội

    đưa công dân từ úc về việt nam

    Ve may bay Vietnam Airline tu Dai Loan ve Viet Nam

    vé máy bay từ vancouver về việt nam

    ReplyDelete
  113. This article is perfect, thanks for this excellent list to share with us.


    arabianseafood

    ReplyDelete
  114. We are really grateful for your blog post. You will find a lot of approaches after visiting your post. Great work
    data science training

    ReplyDelete
  115. I feel very grateful that I read this. It is very helpful and very informative and I really learned a lot from it.
    data science training in malaysia

    ReplyDelete
  116. I like your blog very much. Thanks for sharing such amazing blogs always.
    Yankees Blue Bomber Jacket

    ReplyDelete
  117. Good post. I would like to thank you for the effort you put into writing this interesting and informative article. If you need a visa to enter Turkey, you can apply for Turkish Visit Visa and Visa Application Form Can fill e Visa Turkey. It usually doesn't take too long to process and obtain a Turkey Electronic Visa

    ReplyDelete
  118. Thanks for posting the best information and the blog is very good.data science course in Lucknow

    ReplyDelete
  119. Put more informative things on this blog page, and thanks for sharing this. Phoenix Valorant Jacket

    ReplyDelete
  120. Extremely overall quite fascinating post. I was searching for this sort of data and delighted in perusing this one. Continue posting. A debt of gratitude is in order for sharing. cloud computing course in jaipur

    ReplyDelete
  121. I Have Been wondering about this issue, so thanks for posting, please, what are the Ways on How to start a mortgage brokerage business anywhere in the world? thanks.

    ReplyDelete
  122. Thanks for this great post, please, what are the on How to Become Successful & Rich thanks

    ReplyDelete



  123. I was just examining through the web looking for certain information and ran over your blog.It shows how well you understand this subject. Bookmarked this page, will return for extra. data science course in vadodara

    ReplyDelete
  124. Thanks for such a great post and the review, I am totally impressed! Keep stuff like this coming.
    data scientist certification malaysia

    ReplyDelete
  125. POKERBET88 merupakan salah satu situs permainan kartu Online terbaik, aman dan terpercaya dengan persentase kemenangan yang tinggi saat ini di Indonesia. Situs ini juga menyediakan berbagai macam permainan poker Online uang asli yang populer dengan sistem dan server stabil yang mudah di akses serta bonus kemenangan ratusan juta rupiah setiap hari

    ReplyDelete
  126. Extraordinary post I should state and a debt of gratitude is in order for the data. Instruction is unquestionably a clingy subject. Be that as it may, is still among the main subjects within recent memory. I value your post and anticipate more.ethical hacking course in lucknow

    ReplyDelete
  127. First You got a great blog .I will be interested in more similar topics.I commend you for your excellent report on the knowledge that you have shared in this blog.

    digital marketing training in hyderabad
    free digital marketing course in hyderabad

    ReplyDelete
  128. I really like your effort it is very informative articles . Thanks for your efforts. Please check the Kenya visa application form. It is very simple and useful for people who like traveling to other countries .

    ReplyDelete


  129. marijuana has been a stepping stone to the medical condition of most patients.
    many people suffering from cancer, chronic pain, anxiety, and many more have overcome their aillments with cannabis.
    you can order weed from our store.medical condition

    ReplyDelete
  130. A great website with interesting and unique material what else would you need.
    cyber security course in malaysia

    ReplyDelete
  131. This is a very useful article. type of Indian visas, Business, Tourist, conference, Employment, Project visa etc. You can read full info on the types of Indian visa and requirement of all visas via the Indian visa website.

    ReplyDelete
  132. Great tips and very easy to understand. This will definitely be very useful for me when I get a chance to start my blog.
    full stack developer course

    ReplyDelete
  133. Interesting and attractive information. This blog is really rocking... Yes, the post is very interesting and I enjoy it a lot. How India Visa Works? In 3 simple steps you can get your visa. You can fill your online application form &, then upload all documents & pay your visa fee.

    ReplyDelete
  134. We SVJ Technocoat are the leading Service Provider and Exporter of an extensive array of PVD Coating Services In Surat Service and Vapor Deposition Coating Service etc. We are a well known firm for providing excellent quality coating services across the nation and in a timely manner. Owing to our improvised business models, our professionals are offering integrated solutions for our clients.

    ReplyDelete
  135. Superb Information, I really appreciated with it, This is fine to read and valuable pro potential, I really bookmark it, pro broaden read. Appreciation pro sharing. I like it. Data Scientist Course in Dombivli

    ReplyDelete
  136. Естественные катаклизмы или церемониальные жертвоприношения с течением времени основали определенное интерпретацию увиденного. Первые средства гадания были образованы тысячи лет назад до нашей эры. Что обо мне думает загаданный мужчина гадание значится максимально точным действием просмотреть грядущее личности.

    ReplyDelete
  137. DIYAM Impex Our Company Lab Grown Diamond Manufacturer. We have gone from strength to strength over the years, having expanded from our core business of diamond manufacturing to Real Estate, Renewable Energy and Venture Capital. Diamond has its many utility and its industrial value is enhanced by our effective services. We now focus exclusively on Lab Grown Diamonds. DIYAM IMPEX has grown to become a globally trusted and respected player in the diamond industry over the last five decades. Our expertise lies in our ability to produce a consistent supply of quality polished diamonds in all shapes and sizes.

    ReplyDelete
  138. Candela GentleLASE medical grade laser applies precise, controlled pulses of laser. Auckland Laser Hair Removal energy that reach down the hair shaft into the follicle underneath the skin, cauterizing the hair at its root. the encompassing tissue or skin isn’t damaged. The laser’s gentle beam of sunshine damages and consequently prevents the follicle from growing.

    ReplyDelete
  139. you will need support or suggestions, write me privately.
    I interested in your implementation/use case.
    the best situs slot terbaik
    Togel2win
    daftar bo bonanza
    Slot gampang menang

    ReplyDelete
  140. Shreeja Oil Maker is a global leading manufacturer, wholesaler, supplier, exporter of various small scale machinery. Shreeja oil maker machine or Mini Oil Maker Machine Manufacturer is one of our innovative product which is able to extract 100% pure oil from the various seed. This is also known as a cold oil press machine or mini oil Ghani. We have a stronghold in national as well as a worldwide market.

    ReplyDelete
  141. FAB VOGUE STUDIO provide all kind of Fabric which can be use for Making any designer apparel. Kora Silk Fabric We guarantee you’ll love working with us. Design Customization Available. Wholesale price available on request. Quality Assurance. COD Available.

    ReplyDelete