sting Comparing Forecasting Performance with Panel Data [electronic journal]. By encore.st-andrews.ac.uk Published On :: Full Article
sting Betting Against Correlation: Testing Theories of the Low-Risk Effect [electronic journal]. By encore.st-andrews.ac.uk Published On :: Full Article
sting 2020 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW) [electronic journal]. By encore.st-andrews.ac.uk Published On :: IEEE Computer Society Full Article
sting 2020 IEEE International Conference On Artificial Intelligence Testing (AITest) [electronic journal]. By encore.st-andrews.ac.uk Published On :: IEEE / Institute of Electrical and Electronics Engineers Incorporated Full Article
sting 2020 IEEE 26th International Symposium on On-Line Testing and Robust System Design (IOLTS) [electronic journal]. By encore.st-andrews.ac.uk Published On :: IEEE / Institute of Electrical and Electronics Engineers Incorporated Full Article
sting 2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST) [electronic journal]. By encore.st-andrews.ac.uk Published On :: IEEE Computer Society Full Article
sting 389-2020 - IEEE Recommended Practice for Testing Transformers and Inductors for Electronics Applications - Redline [electronic journal]. By encore.st-andrews.ac.uk Published On :: IEEE / Institute of Electrical and Electronics Engineers Incorporated Full Article
sting NH3 plasma-etching-derived porous N-doped carbon nanotubes with FeP nanoparticles and intrinsic carbon defects for boosting oxygen reduction in rechargeable Zn–air batteries By pubs.rsc.org Published On :: Inorg. Chem. Front., 2024, Advance ArticleDOI: 10.1039/D4QI00182F, Research ArticleBing Chen, Minjie Zhou, Na Zhang, Xianglin Deng, HaiHua YangThe formation of intrinsic carbon defects and phase engineered FeP nanoparticles regulated by NH3 plasma etching significantly enhanced the oxygen reduction reaction performance of N-doped carbon nanotubes.To cite this article before page numbers are assigned, use the DOI form of citation above.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting Boosting structural variety and catalytic activity of porphyrinic metal–organic frameworks by harnessing bifunctional ligands By pubs.rsc.org Published On :: Inorg. Chem. Front., 2024, 11,2281-2289DOI: 10.1039/D4QI00314D, Research ArticleWei Wu, Xiu-Liang Lv, Tao He, Guang-Rui Si, Hongliang Huang, Lin-Hua Xie, Yabo Xie, Jian-Rong LiHigh catalytic performance of porphyrin-based MOFs has been achieved by introducing multiple functionality into their ligands and modulating their conformation.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting MMA, Wim Hof breathing and intermittent fasting By www.thehindubusinessline.com Published On :: Sun, 12 May 2024 19:16:06 +0530 Boost your day with Wim Hof breathing, meditation, MMA, fasting, and outdoor exercise for optimal health and wellness Full Article Pulse
sting Boosting health insurance coverage By www.thehindubusinessline.com Published On :: Mon, 08 Jul 2024 07:00:00 +0530 In a landmark move, the IRDAI’s recent guidelines aim to streamline and enhance the health insurance claims process. Groundbreaking among them is setting the three-hour timeline on cashless claims. Full Article Pulse
sting Vande Bharat sleeper train set ready for testing by November 15 By www.thehindubusinessline.com Published On :: Wed, 23 Oct 2024 19:16:23 +0530 ICF is working on hydrogen-powered trains and prototypes for freight transport to enhance e-commerce deliveries Full Article Logistics
sting An interesting line-up of kritis By www.thehindu.com Published On :: Thu, 03 Nov 2016 16:48:26 +0530 Padma Sugavanam’s information on songs lent an edge. Full Article Friday Review
sting Quadrupolar dinuclear hypervalent tin(IV) compounds with near-infrared emission consisting of Schiff bases based on π-conjugated scaffolds By pubs.rsc.org Published On :: Chem. Sci., 2024, 15,17950-17961DOI: 10.1039/D4SC05006A, Edge Article Open Access   This article is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported Licence.Kazuya Tanimura, Kento Tanaka, Masayuki Gon, Kazuo TanakaThe study focuses on dinuclear hypervalent tin(IV) compounds with near-infrared (NIR) emission and unique quadrupolar orientations, showing potential for constructing electronic structures with narrow energy gaps.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting Correction: Second-shell modulation on porphyrin-like Pt single atom catalysts for boosting oxygen reduction reaction By pubs.rsc.org Published On :: Chem. Sci., 2024, Advance ArticleDOI: 10.1039/D4SC90219J, Correction Open Access   This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.Tayyaba Najam, Syed Shoaib Ahmad Shah, Hanqing Yin, Xin Xiao, Shamraiz Talib, Qianqian Ji, Yonggui Deng, Muhammad Sufyan Javed, Jie Hu, Ruo Zhao, Aijun Du, Xingke Cai, Qiang XuTo cite this article before page numbers are assigned, use the DOI form of citation above.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting Telecasting a strong message By www.thehindu.com Published On :: Mon, 31 Oct 2016 00:00:00 +0530 AdhaFULL , a detective drama series on Doordarshan National, seeks to address the country’s coming-of-age issues Full Article Mumbai
sting Why investing in this large-cap fund can be rewarding in choppy markets By www.thehindubusinessline.com Published On :: Fri, 01 Nov 2024 20:31:31 +0530 Kotak Bluechip is a steady outperformer and suits investors, with a medium risk appetite, saving for long-term goals Full Article Mutual Funds
sting Artificial intelligence performance in testing microfluidics for point-of-care By pubs.rsc.org Published On :: Lab Chip, 2024, 24,4998-5008DOI: 10.1039/D4LC00671B, Paper Open Access   This article is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported Licence.Mert Tunca Doganay, Purbali Chakraborty, Sri Moukthika Bommakanti, Soujanya Jammalamadaka, Dheerendranath Battalapalli, Anant Madabhushi, Mohamed S. DrazAI is revolutionizing medicine by enhancing diagnostics and patient care. Our study showed ML and DL AI models excel in microchip testing, underscoring AI's potential to improve precision medicine and POC diagnostics.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting A nanofluidic exchanger for harvesting saline gradient energy By pubs.rsc.org Published On :: Lab Chip, 2024, Advance ArticleDOI: 10.1039/D4LC00544A, PaperSaranath Sripriya, Cyril Picard, Vincent Larrey, Frank Fournel, Elisabeth CharlaixOptimising, by tailored flows, the coupled ion transport in the proximity of selective nanopores multiplies by 300 the recovered osmotic power.To cite this article before page numbers are assigned, use the DOI form of citation above.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting Govt announces guidelines for funding testing facilities under National Green Hydrogen Mission By www.thehindubusinessline.com Published On :: Thu, 04 Jul 2024 17:44:04 +0530 With a budget of ₹200 crore till FY26, the scheme aims to support the development of standards and regulatory frameworks in the Green Hydrogen sector. Full Article Policy
sting Bursting of firecrackers post-Diwali further spikes air pollution in Kolkata By www.newkerala.com Published On :: Sat, 02 Nov 2024 14:50:03 +0530 Full Article
sting Navratri 2024: 5 fasting rules for diabetics to ensure stable blood sugar levels By www.dnaindia.com Published On :: Thu, 03 Oct 2024 13:32:00 GMT Here are five essential fasting rules to help maintain stable blood sugar levels during Navratri 2024. Full Article Health
sting Karwa Chauth 2024: 5 fasting tips for women with diabetes By www.dnaindia.com Published On :: Sat, 19 Oct 2024 10:07:00 GMT Here are five fasting tips to help them manage diabetes effectively during Karwa Chauth 2024. Full Article Health
sting Combination targeted treatment produces lasting remissions in people with resistant aggressive B-cell lymphoma By www.cancer.gov Published On :: Wed, 19 Jun 2024 12:00:00 +0000 More than half of clinical trial participants treated with venetoclax, ibrutinib, prednisone, obinutuzumab, and lenalidomide (ViPOR) had substantial tumor shrinkage. Of those, 38% had tumors that disappeared completely. Full Article
sting Alliance between parties key for ousting Jaganmohan Reddy, says JSP chief Pawan Kalyan By www.thehindu.com Published On :: Thu, 17 Aug 2023 18:05:38 +0530 It all depends on the top leaders of BJP and TDP; if they decide not to come together, it might aid YSR Congress for another five-year term, which would take the State backwards by another five years, said the Jana Sena Party chief Full Article Andhra Pradesh
sting Bangladesh asks Interpol for help in arresting ousted Prime Minister Sheikh Hasina By www.thehindu.com Published On :: Tue, 12 Nov 2024 21:10:54 +0530 A special tribunal in Bangladesh has asked the international police organization Interpol to issue a red notice for the arrest of ousted Prime Minister Sheikh Hasina in connection with the deaths of hundreds of protesters Full Article World
sting Rapid detection of monkeypox virus and differentiation of West African and Congo Basin strains using endonuclease restriction-mediated real-time PCR-based testing By pubs.rsc.org Published On :: Anal. Methods, 2024, Advance ArticleDOI: 10.1039/D4AY00492B, PaperJuan Zhou, Fei Xiao, Xiaolan Huang, Jin Fu, Nan Jia, Chunrong Sun, Min Chen, Zheng Xu, Hui Huang, Yi WangA novel multiplex ET-PCR assay that integrates PCR amplification, restriction endonuclease cleavage and real-time fluorescence detection was devised to diagnose MPXV infection and distinguish the Congo Basin and West Africa MPXV strains.To cite this article before page numbers are assigned, use the DOI form of citation above.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting A highly selective probe engineered to detect polarity and distinguish normal cells and tumor cells in tissue sections By pubs.rsc.org Published On :: Anal. Methods, 2024, Advance ArticleDOI: 10.1039/D4AY00438H, PaperSai Zhu, Lixuan Dai, Xiaoli Zhong, Weiying LinWe have designed a polarity fluorescent probe (DCI-Cou-polar) with high selectivity for diagnosing cancer.To cite this article before page numbers are assigned, use the DOI form of citation above.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting Are These the Most Interesting Front-end Developer Tools for 2021? By www.impressivewebs.com Published On :: Tue, 05 Jan 2021 09:47:31 +0000 When I come to the end of any given year, it’s always interesting to look back through the click-through stats for my weekly newsletter Web Tools Weekly to see which tools got the most attention. This year wasn’t all that different from previous years. I’ve learned that clicks happen for basically one of two reasons: The post Are These the Most Interesting Front-end Developer Tools for 2021? appeared first on Impressive Webs. Full Article Roundups and Resources
sting Rational design and in vitro testing of new urease inhibitors to prevent urinary catheter blockage By pubs.rsc.org Published On :: RSC Med. Chem., 2024, 15,3597-3608DOI: 10.1039/D4MD00378K, Research Article Open Access   This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.Rachel A. Heylen, Nicola Cusick, Tom White, Emily J. Owen, Bethany L. Patenall, Martin Alm, Peter Thomsen, Maisem Laabei, A. Toby A. JenkinsIn silico identification of urease inhibitors based on thiourea, tested to determine IC50 and tested on a catheterised in vitro bladder model, showing efficacy in reducing catheter blockage.The content of this RSS Feed (c) The Royal Society of Chemistry Full Article
sting 590: Twisting Through Websites By shoptalkshow.com Published On :: Mon, 06 Nov 2023 10:08:50 +0000 The excitement of launching Luro, changes in social media platforms, different seasons for coding and marketing, embedded social media post weight, CSS thoughts from Web Unleashed, focus state issues, and fact checking and updating old posts on your blog. Full Article All Episodes Blogging CSS view transitions
sting 595: MedTalk Show, Plagiarism and Code Grifting, and How We’re Testing Code By shoptalkshow.com Published On :: Mon, 11 Dec 2023 09:03:30 +0000 Blood pressure, stress, and COVID highlight the MedTalk Show portion of this episode, a new "Did You Know" segment about dev tools in Chrome, 4 hour video on plagiarism and code grifters, typography, breaking out of CSS Grid, the oldest things Chris and Dave worked on, and what the testing process is like at Luro or CodePen. Full Article All Episodes css grid plagirism Testing Typography
sting The ABC of composting By www.thehindu.com Published On :: Fri, 27 Feb 2015 16:15:45 +0530 A quick primer on how to manage all that rich organic waste your home generates Full Article Property Plus
sting Typecasting eco-ideas By www.thehindu.com Published On :: Fri, 20 Nov 2015 14:26:08 +0530 Important public buildings ignore the time-tested lessons of sustainability found in local architecture. By SATHYA PRAKASH VARANASHI Full Article Green Living
sting Testing the new By www.thehindu.com Published On :: Fri, 01 Jan 2016 15:38:46 +0530 Green buildings cannot be achieved only by reducing power, water and cost consumption, but by relooking at the very way we construct. Full Article Property Plus
sting Investing with no fear, no greed By www.thehindubusinessline.com Published On :: Sun, 29 Sep 2024 21:05:00 +0530 Venture capital firm Fundamentum sees growth opportunity in India’s digital transformation Full Article Emerging Entrepreneurs
sting Cold plunges, hot saunas, smoothies, and fasting By www.thehindubusinessline.com Published On :: Sun, 06 Oct 2024 21:49:00 +0530 Fitness regimen on the go Full Article Pulse
sting Investing in companies with ‘indicorn’ potential By www.thehindubusinessline.com Published On :: Sun, 13 Oct 2024 20:01:00 +0530 Titan Capital backs seed-stage companies with potential to reach ₹100 crore revenue within five years Full Article Emerging Entrepreneurs
sting Delhi cop Nidhin Valsan’s inspiring journey from arresting cancer to Ironman finish line By www.thehindu.com Published On :: Fri, 08 Nov 2024 02:05:22 +0530 Diagnosed with stage 4 non-Hodgkin’s lymphoma in 2021, IPS officer Nidhin Valsan resurrected himself by competing the Ironman triathlon and writing his memoir because he hopes to be a good influence on other cancer patients Full Article Delhi
sting Delhi | The DAG is hosting an exhibition that celebrates MF Husain and his enduring legacy By www.thehindu.com Published On :: Sat, 09 Nov 2024 15:44:19 +0530 An exhibition in New Delhi’s DAG covers pivotal moments of legendary artist and painter MF Husain’s artistic journey Full Article Art
sting Delhi HC imposes ₹10,000 fine on advocate for casting aspersions on judge By www.thehindu.com Published On :: Sun, 10 Nov 2024 00:37:52 +0530 Full Article Delhi
sting Interesting, but only in parts By www.thehindubusinessline.com Published On :: Sun, 29 Aug 2021 20:33:39 +0530 The profiling of 25 BITSians follows a templated style Full Article Books
sting When Tamil Nadu police opened fire at farmers protesting against power tariff increase in 1970 By www.thehindu.com Published On :: Thu, 05 Sep 2024 23:46:17 +0530 Tamil Nadu’s history of free power supply for farming led to violent agitations, political backtracking, and eventual implementation in phases Full Article Tamil Nadu
sting Monsoon forecasting to get a high-tech makeover By www.thehindu.com Published On :: Thu, 09 Jun 2016 07:43:21 +0530 $60 million will be spent on a new supercomputer to improve the accuracy of one of the world's most vital weather forecasts Full Article Mumbai Capital
sting Hyundai Motor India debuts at BSE at a discount of 1.48%, falls nearly 6% post listing By www.thehindu.com Published On :: Tue, 22 Oct 2024 10:15:03 +0530 This is the biggest ever IPO to have ever hit in the Indian capital markets Full Article Business
sting Twelve Days of Front End Testing By 24ways.org Published On :: Mon, 02 Dec 2019 12:00:00 +0000 Amy Kapernick sings us through numerous ways of improving the robustness and reliability of our front end code with a comprehensive rundown of ideas, tools, and resources. The girls and boys won’t get any toys until all the tests are passing. Anyone who’s spoken to me at some point in November may get the impression that I’m a bit of a grinch. But don’t get me wrong, I love Christmas, I love decorating my tree, singing carols, and doing Christmas cooking - in December. So for me to willingly be humming the 12 days of Christmas in October, it’s probably for something that I think is even more important than banning premature Christmas decorations, like front end testing. On the 12th day of Christmas, my front end dev, she gave to me, 12 testing tools, 11 optimised images, 10 linting rules, 9 semantic headings, 8 types of colour blindness, 7(.0) contrast ratio, 6 front end tests, 5 browser types, 4 types of tests, 3 shaken trees, 2 image types, and a source controlled deployment pipeline. Twelve Testing Tools axe does automated accessibility testing. Run as part of your development build, it outputs warnings to your console to let you know what changes you need to make (referencing accessibility guides). You can also specify particular accessibility standard levels that you’d like to test against, eg. best-practice, wcag2a or wcag2aa, or you can pick and choose individual rules that you want to check for (full list of rules you can test with axe). aXe Core can be used to automate accessibility testing, and has a range of extensions for different programming languages and frameworks. BackstopJS runs visual regression tests on your website. Run separately, or as part of your deployment/PR process, you can use it to make sure your code changes aren’t bleeding into other areas of the website. By default, BackstopJS will set you up with a bunch of configuration options by running backstop init in your project to help get you started. BackstopJS compares screenshots of your website to previous screenshots and compares the visual differences to see what’s changed. Website Speed Test analyses the performance of your website specifically with respect to images, and the potential size savings if they were optimised. Calibre runs several different types of tests by leveraging Lighthouse. You can run it over your live website through their web app or through the command line, it then monitors your website for performance and accessibility over time, providing metrics and notifications of any changes. Calibre provides an easy to use interface and dashboard to test and monitor your website for performance, accessibility and several other areas. Cypress is for end-to-end testing of your website. When visual regression testing may be a bit much for you, Cypress can help you test and make sure elements are still on the page and visible (even if they’re not pixel for pixel where they were last time). pa11y is for automated accessibility testing. Run as part of your build process or using their CLI or dashboard, it tests your website against various Web Content Accessibility Guidelines (WCAG) criteria (including visual tests like colour contrast). While axe is run as part of your dev build and gives you an output to the console, it can be combined with pa11y to automate any changes as part of your build process. whocanuse was created by Corey Ginnivan, and it allows you to view colour combinations as those with colour blindness would (as well as testing other visual deficiencies, and situational vision events), and test the colour contrast ratio based on those colours. Colour contrast assessment of my brand colours, testing them for issues for people with various vision deficiencies, and situational vision events. Colour Blindness Emulation was created by Kyo Nagashima as an SVG filter to emulate the different types of colour blindness, or if you’re using Gatsby, you can use a plugin based off of gatsby-plugin-colorblind-filters. Accessible Brand Colors tests all your branding colours against each other (this is great to show designers what combinations they can safely use). Accessible Brand Colors tests all colour combinations of background and text colours available from your branding colours, and checks them for compliance levels at various font sizes and weights. Browser dev tools - Most of the modern browsers have been working hard on the features available in their dev tools: Firefox: Accessibility Inspector, Contrast Ratio testing, Performance monitoring. Chromium: (Chrome, Edge Beta, Brave, Vivaldi, Opera, etc) - Accessibility Inspector, Contrast Ratio testing, Performance Monitoring, Lighthouse Audits (testing performance, best practices, accessibility and more). Edge: Accessibility Inspector, Performance monitoring. Safari: Accessibility Inspector, Performance monitoring. Firefox (left), Chrome, and Edge Beta (right) Dev Tools now analyse contrast ratios in the colour picker. The Chromium-based browsers also show curves on the colour picker to let you know which shades would meet the contrast requirements. Linc is a continuous delivery platform that makes testing the front end easier by automatically deploying a version of your website for every commit on every branch. One of the biggest hurdles when testing the front end is needing a live version of the site to view and test against. Linc makes sure you always have one. ESLint and Stylelint check your code for programmatic and stylistic errors, as well as helping keep formatting standard on projects with multiple developers. Adding a linter to your project not only helps you write better code, it can reduce simple errors that might be found during testing time. If you’re not writing JavaScript, there are plenty of alternatives for whatever language you’re writing in. If you’re trying to run eslint in VS Code, make sure you don’t have the Beautify extension installed, as that will break things. Eleven Optimised Images When it comes to performance, images are where we take the biggest hit, with images accounting for over 50% of total transfer size for websites. Many websites are serving excessively large images “just in case”, but there’s actually a native HTML element that allows us to serve different image sizes based on the screen size or serve better image formats when the browser supports it (or both). <!-- Serving different images based on the width of the screen --> <picture> <source srcset="/img/banner_desktop.jpg" media="(min-width: 1200px)" /> <source srcset="/img/banner_tablet.jpg" media="(min-width: 700px)" /> <source srcset="/img/banner_mobile.jpg" media="(min-width: 300px)" /> <img src="/img/banner_fallback.jpg"> </picture> <!-- Serving different image formats based on browser compatibility --> <picture> <source srcset="/banner.webp" type="image/webp" /> <img src="/img/banner_fallback.jpg"> </picture> Ten Linting Rules A year ago, I didn’t use linting. It was mostly just me working on projects, and I can code properly right? But these days it’s one of the first things I add to a project as it saves me so much time (and has taught me a few things about JavaScript). Linting is a very personal choice, but there are plenty of customisations to make sure it’s doing what you want, and it’s available in a wide variety of languages (including linting for styling). // .eslintrc module.exports = { rules: { 'no-var': 'error', 'no-unused-vars': 1, 'arrow-spacing': ['error', { before: true, after: true }], indent: ['error', 'tab'], 'comma-dangle': ['error', 'always'], // standard plugin - options 'standard/object-curly-even-spacing': ['error', 'either'], 'standard/array-bracket-even-spacing': ['error', 'either'], }, } // .stylelintrc { "rules": { "color-no-invalid-hex": true, "indentation": [ "tab", { "except": [ "value" ] } ], "max-empty-lines": 2, } } Nine Semantic Headings No, I’m not saying you should use 9 levels of headings, but your webpage should have an appropriate number of semantic headings. When your users are accessing your webpage with a screen reader, they rely on landmarks like headings to tell them about the page. Similarly to how we would scan a page visually, screen readers give users a list of all headings on a page to allow them to scan through the sections and access the information faster. When there aren’t any headings on a page (or headings are being used for their formatting rather than their semantic meaning), it makes it more difficult for anyone using a screen reader to understand and navigate the page. Make sure that you don’t skip heading levels on your page, and remember, you can always change the formatting on a p tag if you need to have something that looks like a heading but isn’t one. <h1>Heading 1 - Page Title</h2> <p>Traditionally you'll only see one h1 per page as it's the main page title</p> <h2>Heading 2</h2> <p>h2 helps to define other sections within the page. h2 must follow h1, but you can also have h2 following another h2.</p> <h3>Heading 3</h3> <p>h3 is a sub-section of h2 and follows similar rules to h2. You can have a h3 after h3, but you can't go from h1 to h3.</p> <h4>Heading 4</h4> <p>h4 is a sub-section of h3. You get the pattern?</p> Eight Types of Colour Blindness Testing colour contrast may not always be enough, as everyone perceives colour differently. Take the below colour combination (ignoring the fact that it doesn’t actually look nice). It has decent colour contrast and would meet the WCAG colour contrast requirements for AA standards – but what if one of your users was red-green colour blind? Would they be able to tell the difference? http://colorsafe.co/ empowers designers with beautiful and accessible colour palettes based on WCAG Guidelines of text and background contrast ratios. Red-green colour blindness is the most common form of colour blindness, but there are 8 different types affecting different parts of the colour spectrum, all the way up to complete colour blindness. Protanopia Inability to see red end of the colour spectrum. Protanomaly Difficulty seeing some shades of red. Deuteranopia Inability to see the green portion of the colour spectrum. Deuteranomaly Difficulty seeing some shades of green. Tritanopia Inability to see blue end of the colour spectrum. Tritanomaly Difficulty seeing some shades of blue. Achromatopsia Inability to see all parts of the colour spectrum, only able to perceive black, white and shades of grey. Achromatomaly Difficulty seeing all parts of the colour spectrum. Seven (.0) Contrast Ratio Sufficient colour contrast is perhaps one of the best steps to take for accessibility, as it benefits everyone. Having adequate contrast doesn’t just make the experience better for those with vision impairments, but it also helps those with situational impairments. Have you ever been in the sun and tried to read something on your screen? Whether you can view something when there’s glare could be as easy as making sure there’s enough contrast between the text and its background colour. The WCAG have defined a contrast ratio of at least 4.5:1 for normal text (18.5px) and 3:1 for large text (24px) to meet AA accessibility standards, but this should be an absolute minimum and isn’t always readable. All four below examples have sufficient contrast to pass AA standards, but you might be hard pressed to read them when there’s glare or you have a dodgy monitor (even more so considering most websites use below 18.5px for their base font size). Examples of 4.5:1 colour contrast To meet the AAA standard you need to have a ratio of 7:1 for normal text and 4.5:1 for large text, which should be sufficient for those with 20/80 vision to read. Six Front End Tests Adding default axe-core testing to Gatsby: //gatsby-config.js { resolve: 'gatsby-plugin-react-axe', options: {}, }, Running pa11y tests on homepage at various screen sizes: // tests/basic-a11y_home.js const pa11y = require('pa11y'), fs = require('file-system') runTest() async function runTest() { try { const results = await Promise.all([ pa11y('http://localhost:8000', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_home_mobile.png`, viewport: { width: 320, height: 480, deviceScaleFactor: 2, isMobile: true, }, }), pa11y('http://localhost:8000', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_home_desktop.png`, viewport: { width: 1280, height: 1024, deviceScaleFactor: 1, isMobile: false, }, }), ]) fs.writeFile('tests/results/basic-a11y_home.json', JSON.stringify(results), err => { console.log(err) }) } catch (err) { console.error(err.message) } } Running pa11y tests on a blog post template at various screen sizes: // tests/basic-a11y_post.js const pa11y = require('pa11y'), fs = require('file-system') runTest() async function runTest() { try { const results = await Promise.all([ pa11y('http://localhost:8000/template', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_post_mobile.png`, viewport: { width: 320, height: 480, deviceScaleFactor: 2, isMobile: true, }, }), pa11y('http://localhost:8000/template', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_post_desktop.png`, viewport: { width: 1280, height: 1024, deviceScaleFactor: 1, isMobile: false, }, }), ]) fs.writeFile('tests/results/basic-a11y_post.json', JSON.stringify(results), err => { console.log(err) }) } catch (err) { console.error(err.message) } } Running BackstopJS on a homepage and blog post template at various screen sizes: // backstop.json { "id": "backstop_default", "viewports": [ { "label": "phone", "width": 320, "height": 480 }, { "label": "tablet", "width": 1024, "height": 768 }, { "label": "desktop", "width": 1280, "height": 1024 } ], "onBeforeScript": "puppet/onBefore.js", "onReadyScript": "puppet/onReady.js", "scenarios": [ { "label": "Blog Homepage", "url": "http://localhost:8000", "delay": 2000, "postInteractionWait": 0, "expect": 0, "misMatchThreshold": 1, "requireSameDimensions": true }, { "label": "Blog Post", "url": "http://localhost:8000/template", "delay": 2000, "postInteractionWait": 0, "expect": 0, "misMatchThreshold": 1, "requireSameDimensions": true } ], "paths": { "bitmaps_reference": "backstop_data/bitmaps_reference", "bitmaps_test": "backstop_data/bitmaps_test", "engine_scripts": "backstop_data/engine_scripts", "html_report": "backstop_data/html_report", "ci_report": "backstop_data/ci_report" }, "report": [ "browser" ], "engine": "puppeteer", "engineOptions": { "args": [ "--no-sandbox" ] }, "asyncCaptureLimit": 5, "asyncCompareLimit": 50, "debug": false, "debugWindow": false } Running Cypress tests on the homepage: // cypress/integration/basic-test_home.js describe('Blog Homepage', () => { beforeEach(() => { cy.visit('http://localhost:8000') }) it('contains "Amy Goes to Perth" in the title', () => { cy.title().should('contain', 'Amy Goes to Perth') }) it('contains posts in feed', () => { cy.get('.article-feed').find('article') }) it('all posts contain title', () => { cy.get('.article-feed') .find('article') .get('h2') }) }) Running Cypress tests on a blog post template at various screen sizes: // cypress/integration/basic-test_post.js describe('Blog Post Template', () => { beforeEach(() => { cy.visit('http://localhost:8000/template') }) it('contains "Amy Goes to Perth" in the title', () => { cy.title().should('contain', 'Amy Goes to Perth') }) it('has visible post title', () => { cy.get('h1').should('be.visible') }) it('has share icons', () => { cy.get('.share-icons a').should('be.visible') }) it('has working share icons', () => { cy.get('.share-icons a').click({ multiple: true }) }) it('has a visible author profile image', () => { cy.get('.author img').should('be.visible') }) }) describe('Mobile Blog Post Template', () => { beforeEach(() => { cy.viewport('samsung-s10') cy.visit('http://localhost:8000/template') }) it('contains "Amy Goes to Perth" in the title', () => { cy.title().should('contain', 'Amy Goes to Perth') }) it('has visible post title', () => { cy.get('h1').should('be.visible') }) it('has share icons', () => { cy.get('.share-icons .share-link').should('be.visible') }) it('has a visible author profile image', () => { cy.get('.author img').should('be.visible') }) }) Five Browser Types Browser testing may be the bane of our existence, but it’s gotten easier, especially when you know the secret: Not every browser needs to look the same. Now, this may differ depending on your circumstances, but your website doesn’t have to match pixel for pixel across all browsers. As long as it’s on-brand and is useable across all browsers (this is where a good solid HTML foundation is useful), it’s ok for your site to look a little different between browsers. While the browsers you test in will differ depending on your user base, the main ones you want to be covering are: Chrome/Chromium Firefox Safari Internet Explorer Edge Make sure you’re testing these browsers on both desktop and mobile/tablet as well, sometimes their level of support or rendering engine will differ between devices – for example, iOS Chrome uses the Safari rendering engine, so something that works on Android Chrome may not work on iOS Chrome. Four Types of Test When it comes to testing the front end, there are a few different areas that we can cover: Accessibility Testing: doing accessibility testing properly usually involves getting an expert to run through your website, but there are several automated tests that you can run against various standard levels. Performance Testing: performance testing does technically bleed into the back end as well, but there are plenty of things that can be done from a front end perspective. Making sure the images are optimised, our code is clean and minified, and even optimising fonts using features like the font-display property. No amount of optimising the server and back end will matter if it takes forever for the front end to appear in a browser. Visual Regression Testing: we’ve all been in the position where changing one line of CSS somewhere has affected another section of the website. Visual regression testing helps prevent that. By using a tool that compares before and after screenshots against one another to flag up what’s changed, you can be sure that style changes won’t bleed into unintended areas of the site. Browser/device testing: while we all want our users to be running the most recent version of Chrome or Firefox, they may still be using the inbuilt browser on their DVD player – so we need to test various browsers, platforms and devices to make sure that our website can be accessed on whatever device they use. Three Shaken Trees Including (and therefore requiring your users to download) things that you’re not using affects the performance of your application. Are you forcing them to download the entire lodash library when you’re only using 2 functions? While a couple of unused lines of code may not seem like a huge performance hit, it can greatly affect users with slower devices or internet connections, as well as cluttering up your code with unused functions and dependencies. This can be set up on your bundler – Webpack and Parcel both have guides for tree shaking, and Gatsby has a plugin to enable it. Two Image Types While there are several different types of images, most of the time they fall into one of two categories: Informative The image represents/conveys important information that isn’t conveyed by the content surrounding it. Decorative The image only adds visual decoration to a page. From these two categories, we can then determine if we need to provide alternative text for an image. If an image is purely decorative, then we add alt="" to let screen readers know that it’s not important. But if an image is informative, then we need to be supplying a text alternative that describes the picture for anyone who’s using a screen reader or isn’t able to see the image (remember the days when a standard internet connection took a long time to load a page and you saw alt text before an image loaded). <img src="./nice-picture.jpg" alt="" /> <img src="./important-graphic.png" alt="This is a picture of something important to help add meaning to the text around me" /> If you have a lot of images with missing alt text, look into services that can auto-generate alt text based on image recognition services. One Source Controlled Deployment Pipeline While front end tests are harder to automate, running them through a source control and deployment pipeline helps track changes and eliminates issues where “it works on my computer”. Whether you’re running tests as part of the PR process, or simply against every commit that comes through, running tests automatically as part of your process makes every developer’s life easier and helps keep code quality at a high standard. We already knew that testing was important, and your project can’t be run unless all your unit and integration tests are written (and pass), but often we forget about testing the front end. There are so many different tests we need to be running on the front end, it’s hard to work out what your need to test for and where to start. Hopefully this has given you a bit of insight to front end testing, and some Christmas cheer to take you into the holidays. About the author Amy wears many hats as a freelance developer, business owner and conference addict. She regularly shares her knowledge with her peers and the next generation of developers by mentoring, coaching, teaching and feeding into the tech community in many ways. Amy can be found volunteering her time with Fenders, ACS, SheCodes (formerly Perth Web Girls) and MusesJS (formerly NodeGirls). She also works as an evangelist for YOW! Conferences, is a Twilio Champion and has been nominated for the WiTWA awards for the last 2 years. In her spare time Amy shares her knowledge and experience on her blogs and speaking at conferences. She has previously given keynotes at multiple events as well as speaking at several international conferences in the US and Europe. More articles by Amy Full Article Code testing
sting Five Interesting Ways to Use Array.reduce() (And One Boring Way) By 24ways.org Published On :: Wed, 18 Dec 2019 12:00:00 +0000 Chris Ferdinandi turns the heat down low and lets the sauce reduce while we take a look at how to add spice to our source with a sprinkling of Array.reduce(). Just a little ingenuity with the humblest of functions. Of all the modern array methods, the one I had the hardest time wrapping my head around was Array.reduce(). On the surface, it seems like a simple, boring method that doesn’t do much. But below its humble exterior, Array.reduce() is actually a powerful, flexible addition to your developer toolkit. Today, we’re going to look at some cool things you can do with Array.reduce(). How Array.reduce() works Most of the modern array methods return a new array. The Array.reduce() method is a bit more flexible. It can return anything. Its purpose is to take an array and condense its content into a single value. That value can be a number, a string, or even an object or new array. That’s the part that’s always tripped me up – I didn’t realize just how flexible it is! The syntax The Array.reduce() accepts two arguments: a callback method to run against each item in the array, and a starting value. The callback also accepts two arguments: the accumulator, which is the current combined value, and the current item in the loop. Whatever you return is used as the accumulator for the next item in the loop. On the very first loop, that starting value is used instead. var myNewArray = [].reduce(function (accumulator, current) { return accumulator; }, starting); Let’s look at some examples to make this all tangible. 1. Adding numbers together Let’s say you had an array of numbers that you wanted to add together. Using Array.forEach(), you might do something like this: var total = 0; [1, 2, 3].forEach(function (num) { total += num; }); This is the cliche example for using Array.reduce(). I find the word accumulator confusing, so in this example, I’m calling it sum, because that’s what it is. var total = [1, 2, 3].reduce(function (sum, current) { return sum + current; }, 0); Here, we pass in 0 as our starting value. In the callback, we add the current value to the sum, which has our starting value of 0 on the first loop, then 1 (the starting value of 0 plus the item value of 1), then 3 (the sum value of 1 plus the item value of 2), and so on. Here’s a demo. 2. Combining multiple array methods into Array.map() and Array.filter() into a single step Imagine you had an array of wizards at Hogwarts. var wizards = [ { name: 'Harry Potter', house: 'Gryfindor' }, { name: 'Cedric Diggory', house: 'Hufflepuff' }, { name: 'Tonks', house: 'Hufflepuff' }, { name: 'Ronald Weasley', house: 'Gryfindor' }, { name: 'Hermione Granger', house: 'Gryfindor' } ]; You want to create a new array that contains just the names of wizards who are in Hufflepuff. One way you could do that is by using the Array.filter() method to get back just wizards whose house property is Hufflepuff. Then, you’d use the Array.map() method to create a new array containing just the name property for the remaining wizards. // Get the names of the wizards in Hufflepuff var hufflepuff = wizards.filter(function (wizard) { return wizard.house === 'Hufflepuff'; }).map(function (wizard) { return wizard.name; }); With the Array.reduce() method, we can get the same array in a single pass, improving our performance. You pass in an empty array ([]) as the starting value. On each pass, you check to see if the wizard.house is Hufflepuff. If it is, you push it to the newArr (our accumulator in this example). If not, you do nothing. Either way, you return the newArr to become the accumulator on the next pass. // Get the names of the wizards in Hufflepuff var hufflepuff = wizards.reduce(function (newArr, wizard) { if (wizard.house === 'Hufflepuff') { newArr.push(wizard.name); } return newArr; }, []); Here’s another demo. 3. Creating markup from an array What if, instead of creating an array of names, we wanted to create an unordered list of wizards in Hufflepuff? Instead of passing an empty array into Array.reduce() as our starting value, we’ll pass in an empty string ('') and call it html. If the wizard.house equals Hufflepuff, we’ll concatenate our html string with the wizard.name wrapped in an opening and closing list item (li). Then, we’ll return the html to become the accumulator on the next loop. // Create a list of wizards in Hufflepuff var hufflepuffList = wizards.reduce(function (html, wizard) { if (wizard.house === 'Hufflepuff') { html += '<li>' + wizard.name + '</li>'; } return html; }, ''); Add an opening and closing unordered list element before and after Array.reduce(), and you’re ready to inject your markup string into the DOM. // Create a list of wizards in Hufflepuff var hufflepuffList = '<ul>' + wizards.reduce(function (html, wizard) { if (wizard.house === 'Hufflepuff') { html += '<li>' + wizard.name + '</li>'; } return html; }, '') + '</ul>'; See it in action here. 4. Grouping similar items in an array together The lodash library has a groupBy() method takes a collection of items as an array and groups them together into an object based on some criteria. Let’s say you want an array of numbers. If you wanted to group all of the items in numbers together based on their integer value, you would do this with lodash. var numbers = [6.1, 4.2, 6.3]; // returns {'4': [4.2], '6': [6.1, 6.3]} _.groupBy(numbers, Math.floor); If you had an array of words, and you wanted to group the items in words by their length, you would do this. var words = ['one', 'two', 'three']; // returns {'3': ['one', 'two'], '5': ['three']} _.groupBy(words, 'length'); Creating a groupBy() function with Array.reduce() You can recreate that same functionality using the Array.reduce() method. We’ll create a helper function, groupBy(), that accepts the array and criteria to sort by as arguments. Inside groupBy(), we’ll run Array.reduce() on our array, passing in an empty object ({}) as our starting point, and return the result. var groupBy = function (arr, criteria) { return arr.reduce(function (obj, item) { // Some code will go here... }, {}); }; Inside the Array.reduce() callback function, we’ll check to see if the criteria is a function, or a property of the item. Then we’ll get its value from the current item. If there’s no property in the obj with that value yet, we’ll create it and assign an empty array as its value. Finally, we’ll push the item to that key, and return the object as the accumulator for the next loop. var groupBy = function (arr, criteria) { return arr.reduce(function (obj, item) { // Check if the criteria is a function to run on the item or a property of it var key = typeof criteria === 'function' ? criteria(item) : item[criteria]; // If the key doesn't exist yet, create it if (!obj.hasOwnProperty(key)) { obj[key] = []; } // Push the value to the object obj[key].push(item); // Return the object to the next item in the loop return obj; }, {}); }; Here’s a demo of the completed helper function. Special thanks to Tom Bremer for helping me make some improvements to this one. You can find this helper function and more like it on the Vanilla JS Toolkit. 5. Combining data from two sources into an array Remember our array of wizards? var wizards = [ { name: 'Harry Potter', house: 'Gryfindor' }, { name: 'Cedric Diggory', house: 'Hufflepuff' }, { name: 'Tonks', house: 'Hufflepuff' }, { name: 'Ronald Weasley', house: 'Gryfindor' }, { name: 'Hermione Granger', house: 'Gryfindor' } ]; What if you had another data set, an object of house points each wizard has earned. var points = { HarryPotter: 500, CedricDiggory: 750, RonaldWeasley: 100, HermioneGranger: 1270 }; Imagine you wanted to combine both sets of data into a single array, with the number of points added to each wizard’s data in the wizards array. How would you do it? The Array.reduce() method is perfect for this! var wizardsWithPoints = wizards.reduce(function (arr, wizard) { // Get the key for the points object by removing spaces from the wizard's name var key = wizard.name.replace(' ', ''); // If the wizard has points, add them // Otherwise, set them to 0 if (points[key]) { wizard.points = points[key]; } else { wizard.points = 0; } // Push the wizard object to the new array arr.push(wizard); // Return the array return arr; }, []); Here’s a demo combining data from two sources into an array. 6. Combining data from two sources into an object What if you instead wanted to combine the two data sources into an object, where each wizard’s name was the key, and their house and points were properties? Again, the Array.reduce() method is perfect for this. var wizardsAsAnObject = wizards.reduce(function (obj, wizard) { // Get the key for the points object by removing spaces from the wizard's name var key = wizard.name.replace(' ', ''); // If the wizard has points, add them // Otherwise, set them to 0 if (points[key]) { wizard.points = points[key]; } else { wizard.points = 0; } // Remove the name property delete wizard.name; // Add wizard data to the new object obj[key] = wizard; // Return the array return obj; }, {}); Here’s a demo combining two data sets into an object. Should you use Array.reduce() more? The Array.reduce() method has gone from being something I thought was pointless to my favorite JavaScript method. So, should you use it? And when? The Array.reduce() method has fantastic browser support. It works in all modern browsers, and IE9 and above. It’s been supported in mobile browsers for a long time, too. If you need to go back even further than that, you can add a polyfill to push support back to IE6. The biggest complaint you can make about Array.reduce() is that it’s confusing for people who have never encountered it before. Combining Array.filter() with Array.map() is slower to run and involves extra steps, but it’s easier to read. It’s obvious from the names of the methods what they’re supposed to be doing. That said, there are times where Array.reduce() makes things that would be complicated more simple rather than more complicated. The groupBy() helper function is a good example. Ultimately, this is another tool to add to your toolkit. A tool that, if used right, can give you super powers. About the author Chris Ferdinandi helps people learn vanilla JavaScript. He believes there’s a simpler, more resilient way to make things for the web. Chris is the author of the Vanilla JS Pocket Guide series, creator of the Vanilla JS Academy training program, and host of the Vanilla JS Podcast. His developer tips newsletter is read by thousands of developers each weekday. He’s taught developers at organizations like Chobani and the Boston Globe, and his JavaScript plugins have been used used by Apple and Harvard Business School. Chris Coyier, the founder of CSS-Tricks and CodePen, has described his writing as “infinitely quote-worthy.” Chris loves pirates, puppies, and Pixar movies, and lives near horse farms in rural Massachusetts. He runs Go Make Things with Bailey Puppy, a lab-mix from Tennessee. More articles by Chris Full Article Code javascript
sting For new players, existing expense of management regulations are a challenge: Zuno General Insurance CEO By www.thehindubusinessline.com Published On :: Sun, 03 Nov 2024 10:21:12 +0530 Zuno General Insurance continued to grow faster than the industry in the second quarter of this fiscal, says Shanai Ghosh, MD & CEO of the company Full Article Money & Banking
sting Forecasting better in India, come rain or shine By www.thehindu.com Published On :: Sat, 19 Oct 2024 00:08:00 +0530 With improvements, the ‘Mausam Mission’ will transform how weather information can help India become climate smart Full Article Comment
sting Pulkit TMT introduces innovative ‘Lab on Wheels’ for quality testing in Kerala By www.thehindubusinessline.com Published On :: Thu, 29 Aug 2024 17:14:36 +0530 The initiative aims to raise awareness about the significance of using high-quality TMT bars in construction projects and empower consumers, builders, and dealers to make informed decisions about their steel choices. Full Article Real Estate