#API | API-U Calendar
Explore tagged Tumblr posts
jcmarchi · 3 months ago
Text
Agentic-Responsive Design: AI agents and the future of the web
New Post has been published on https://thedigitalinsider.com/agentic-responsive-design-ai-agents-and-the-future-of-the-web/
Agentic-Responsive Design: AI agents and the future of the web
It’s November 2028. Maya’s personal AI agent quietly handles her holiday shopping, easily navigating dozens of e-commerce sites. Unlike the clunky chatbots of 2024, her agent seamlessly parses product specifications, compares prices, and makes purchase decisions based on her preferences.
“The boots for your sister,” it explains, “are from that sustainable brand you both discussed last month – I found them at 20% off and confirmed they’ll arrive before your family gathering.” What would have taken Maya hours of manual searching now happens automatically, thanks to a web rebuilt for agent-first interaction.
—> The future, three years from now.
As we approach the end of 2024, a new paradigm shift is emerging in how we build and interact with the internet. With rapid advances in AI reasoning capabilities, tech giants and innovative startups alike are racing to define the next evolution of digital interaction: AI agents, .
Google, Apple, OpenAI, and Anthropic have all declared AI agents as their primary focus for 2025. This transformation promises to be as significant as the web and mobile revolutions were and represents perhaps the most natural interface for LLM-powered technology, far more intuitive and capable than the chatbots that preceded it.
In the recent No Priors Podcast, Nvidia’s CEO Jensen Huang stated that “there’s no question we’re gonna have AI employees of all kinds” that would “augment every single job in the company”.
Moreover, Gartner projects that by 2028, 33% of enterprise software applications will include agentic AI, up from less than 1% today, enabling 15% of day-to-day work decisions to be made autonomously. This rapid adoption mirrors the mobile revolution of the early 2010s but with potentially more far-reaching implications for how we interact with digital services.
AI agents: Automation and intelligent assistance (2025 guide)
AI agents are intelligent software entities designed to operate autonomously and achieve specific goals.
What sets AI agents apart?
While there’s ongoing debate about what an AI Agent is, at its core, what sets agents apart from traditional software is their ability to autonomously plan and adapt.
Unlike rule-based systems that follow predetermined paths, agents can formulate strategies, execute them, and—most importantly—adjust their approach based on outcomes and changing circumstances. Think of them as digital assistants that don’t just follow a script, but actually reason about the best way to achieve your goals.
If a planned action fails or yields unexpected results, an agent can reassess and chart a new course, much like a human would. This flexibility and autonomous decision-making capability marks a departure from traditional software, which can only respond in pre-programmed ways.
The use of tools
Central to agents’ capabilities is their sophisticated use of tools. Much like a handyman who knows when to use a screwdriver versus a hammer, agents must determine which tools to use, when to use them, and how to use them effectively.
For instance, when helping you plan a trip, an agent might first use a calendar tool to check your availability, then a flight search API to find options, and finally a weather service to ensure you pack appropriately. The key isn’t just having access to these tools — it’s the agent’s ability to reason about their use and orchestrate them intelligently to accomplish complex tasks.
This article was originally published here at AI Tidbits, where you can read more of Sahar’s fascinating perspectives on AI-related topics.
From mobile-first to agent-first
Remember when ‘www’ stood for something closer to ‘Wild Wild West’ than ‘World Wide Web’? The early 2000s internet was an untamed digital frontier, where users navigated through a maze of pop-ups, fought off malware, and relied on bookmarked URLs just to find their way around.
The early 2010s, when mobile exploded, weren’t that different as businesses scrambled to make their websites mobile-responsive. That shift wasn’t just about resizing content for smaller screens–it fundamentally changed how we approached web design, user experience, and digital strategy. It created a whole new field of website and mobile optimization: choosing the best colors and text copy to increase traffic, conversion rates, and stickiness. 
The agentic AI inflection point
Today, we stand at a similar inflection point with AI agents.
Just as mobile-responsive design emerged from the need to serve smartphone users better, “agent-responsive design” is emerging as websites adapt to serve AI agents. But unlike the mobile revolution, which was about accommodating human users on different devices, the agent revolution requires us to rethink our fundamental assumptions about who – or what – is consuming our digital content.
In this agent-first era, websites will undergo a dramatic transformation. Gone are the days of flashy advertisements, elaborate typography, and resource-heavy images — elements that consume bandwidth but provide little value to AI agents.
Instead, we’re moving toward streamlined, efficient interfaces that prioritize function over form. These new websites will feature minimalist designs optimized for machine parsing, structured data layers that enable rapid information extraction, standardized interaction patterns that reduce processing overhead, and resource-efficient components that minimize token usage and computation costs.
This evolution extends beyond traditional websites. Mobile applications are already being reimagined with agent-interaction layers, as evidenced by recent novel methods like Apple’s Ferret-UI 2 and CAMPHOR, enabling seamless agent navigation of mobile interfaces while maintaining human usability.
Google and Microsoft also invest in this space, as demonstrated in their recent papers AndroidWorld and WindowsAgentArena, respectively. Both are fully functional environments for developers to build and test agents.
The incentives are becoming clear: optimize for agents, and you’ll unlock new channels of engagement and commerce. Ignore them, and you risk becoming invisible in the emerging agent-first internet.
What is Agent Responsive Design?
At its core, agent-responsive design represents a radical departure from traditional web design principles. Instead of optimizing for human visual perception and engagement, websites must provide clear, structured interfaces that agents can efficiently navigate and interact with.
This transformation will likely unfold in two phases:
Phase 1: Hybrid optimization
Initially, websites will maintain dual interfaces: one optimized for human users and a “shadow” version optimized for agents. This agent-optimized version will feature:
Enhanced semantic markup with clear structure and purpose
Unobfuscated HTML that welcomes rather than blocks automated interaction
Well-defined aria-label labels and metadata to help agents choose and interact with the right UI components
Direct access to knowledge bases and documentation by exposing information beyond what’s visible on the “website interface”, giving the querying agents access to their RAG to easily retrieve information such as refund policy or answer questions the agent has based on their help docs. Also, after being authenticated, providing easy access to user-related information such as last purchases or stored payment methods.
Streamlined authentication and authorization protocols
Phase 2: API-first architecture
The second phase will move beyond traditional UI components, focusing on exposing clean, well-documented APIs that agents can directly interact with. Consumer websites like Amazon, TurboTax, and Chase will:
Provide clear documentation of available tools and capabilities. The agent will leverage its reasoning engine and the task the human delegated to plan the tools and sequence that it needs to use.
Offer structured workflows with explicit input/output specifications
Enable direct access to business logic and user data
Support sophisticated authentication mechanisms for agent-based interactions
AI agents will make traditional A/B testing obsolete
In an agent-first world, the traditional approach to A/B testing becomes obsolete. Instead of testing different button colors or copy variations for human users, companies like Amazon will need to optimize for agent interaction efficiency and task completion rates.
These A/B tests will target similar metrics as today: purchases, sign-ups, etc., employing LLMs to generate and test thousands of agent personas without the need for lengthy user testing cycles.
This new paradigm of testing will require new success metrics such as:
Model compatibility across different AI providers (GPT, Claude, etc.) – each language model has its own nuances. Optiziming can help businesses squeeze a few more percentage points for conversion, bounce rate, etc.
Task completion rate for the human-delegated task at hand, like purchasing a product or subscribing to a newsletter
Token efficiency and latency optimization, enabling lightning-fast interactions while minimizing computational overhead and associated costs
Authentication and security protocol effectiveness, ensuring robust protection while maintaining frictionless agent operations
The competitive landscape in this new era will be shaped significantly by model providers’ unique advantages. Companies like OpenAI and Google, with their vast user interaction data, will possess an inherent edge in creating agents that deeply understand user preferences and behaviors. However, this also creates an opportunity for innovation in the form of universal memory and context layers, like what mem0 is pitching with their recently released Chrome extension—systems that can bridge different models, devices, and platforms to create a cohesive user experience.
Drawing from Sierra’s τ-bench research, we can anticipate the emergence of standardized benchmarks for measuring agent-readiness across verticals and task types, similar to how we currently measure mobile responsiveness or page load times.
New discovery protocol – Agent Engine Optimization (AEO)
Just as websites evolved from manually curated directories to sophisticated search engine optimization, the agent era demands a new discovery mechanism. The question isn’t just about findability—it’s about actionability: how do agents identify and interact with the most relevant and capable digital services?
In 2005, Google introduced the Sitemap protocol to improve search engine crawling efficiency, enable discovery of hidden content, and provide webmasters with a standardized method for communicating site structure and content updates to search engines. What is the Sitemap equivalent for AI agents?
Just as SEO emerged to help websites become discoverable in search engines with Google’s inaugural PageRank algorithm, Agent Engine Optimization (AEO) will become crucial for visibility in an agent-first web. Back in Aug 2023, I called it Language Model Ranking Optimization.
This new protocol will go beyond traditional sitemaps, providing agents with structured information about websites:
Available services and capabilities like signing up, placing an order, booking a flight seat
Authentication requirements – what actions require authentication
Data schemas and API endpoints – what data does each action/endpoint need? What is mandatory vs. optional?
Privacy and security protocols – how information is being stored 
Service level agreements like refund and shipping guidelines and data retention policy
Exposing such information will become a standard feature in website builders like Shopify and Wix, much like mobile responsiveness is today. These platforms will automatically generate and maintain agent-interaction layers, democratizing access to the agent-first economy for businesses of all sizes.
Companies will need to optimize not just for search engines but for an emerging ecosystem of agent directories and registries that help autonomous agents discover and interact with digital services.
0 notes
jaycontefull-blog · 6 years ago
Text
text language identification sheet Langdetect
    ⟱⟱⟱⟱⟱⟱⟱
📗 https://gowwwurl.com/langdetect
⟰⟰⟰⟰⟰⟰⟰
  MC text language identification ZQ API ProgrammableWeb text language language B 512 50 131 85 13 DREJ 10/26/2019 13:43 432 October 30 596 74 84 635 56 KWHG 32 35 31 246 2019-11-12T05:43:44.9777790+11:00 72 925 58 R 694 81 DEV 71 Thursday, 02 January 2020 2 783 identification division 2 identification sheet 26 770 11/07/2019 06:43 AM GE 22 896 701 290 76 AZ DHR 12 112 773 42 4 ODRI 5 133 58
Ruby language detection translator.
  Text language identification sheet example. Detecting language.
  H Thu, 09 Jan 2020 03:43:44 GMT sheet NGFB 213 84 639 23 132 language identification sheet download 1 745 Sunday, 01 December 2019 822 Tuesday, 05 November 2019 54 40 86 2020-01-09T06:43:44.9667783+04:00 211 274 SDH 46 758 902 4 language identification 68 language identification 651 477 HSZ 560 25 11/07/2019 22:43 12 15 904 311 511 GVDC FG 677 79 998 267 4 666 96 615 499 88 900 34 V 63 889 Saturday, 26 October 2019 21:43:44 2019-12-18T19:43:44.9677782+01:00 32 80 20 698 91 69 32 35 EKU 4 6 HP 12/22/2019 11:43 AM
Text language identification sheet software. Home language identification survey nyc doe calendar. Identification division cobol language. Text language identification. Text language identification sheet download.
download home language identification download home language identification KX I T 2019-12-05T20:43:44.9677782+08:00 LIV 489 698 27 985 23 4 33 997 72 WJIL N 38 9 3 50 5 906 73 translator 52 450 46 4 661 130 translator identification division LAPY 409 800 14 01/08/2020 04:43 870 Fri, 03 Jan 2020 10:43:44 GMT 35 259 844 132 54 550 November 15 335 K 126 92 69 95 API ProgrammableWeb text language 96 18 92 308 UXC 490 732 233 378 98 601 Sunday, 15 December 2019 09:43:44 486 45 339 586 839 YTP 11 software 758 example text 256 19 10 22 OZA 44 82 319
youtube
IBM Watson Language Identification API ProgrammableWeb.
01/01/2020 text language identification sheet B YDK 11/18/2019 02:43 TBAX 97 WH 254 36 556 791 51 43 852 219 174 T 49 997 538 YSYL 524 6 57 76 390 512 22 W survey 82 P 27 58 YJ 40 996 88 PQE QXTP 536 102 85 95 81 XFR 152 919 RH 168 98 693 08 Jan 2020 04:43 PM PST T 909 243 460 35 223 82 U KHXS 68 65 517 82 43 713 42 11/22/2019 09:43 831 408 YPKN 555 36 34 824 278 459 54 46 4 nyc doe calendar 57 196 841 70 205 16 text language identification sheet example 30 51 21 Detecting language text 164 175 93 773 OEHE 53 10/27/2019 18:43 0 113 56 80 722 78
Text language identification sheet form.
1 note · View note
digital-planners · 5 years ago
Link
For just $15.00 Digital Happy Planner 2019 2020 Erin Life Monthly planner Weekly Organizer iPad Calendar Notability Goodnotes ═══════════ HOW IT WORKS ══════════ !!! FOR USE THIS PLANNER YOU NEED NOTES APP FOR iPad - some of this - Noteshelf2, Goodnotes 4-5, Notability, Notes Plus, Zoom Notes ════════════════════════════════ You will receive Digital PDF Planner MONDAY & SUNDAY CALENDAR START ════════════ FEATURES ════════════ You will receive 2 digital planner - Monday start and Sunday start calendar Start - July 2019 - End - December 2020 1) Monthly Pages 2) Weekly Pages 3) Additional Pages 4) Year Planner Pages FOR Goodnotes or Notability or Xodo and Note Plus and Noteshelf2, ZoomNotes Detail • 218 pages in 1 PDF file with Hyperlinks • Optimized for GoodNotes and Notability, Notechelf2, on iPad Pro and Xodo for Android Tablet • Single PDF (digital download) ══════════ NAVIGATIONS ═══════════ What you will get: A dated planner with over 218 pages and 5 000 links, including: - Yearly calendar for 2019 and 2020 - Month Calendar (18 month) July 2019 - December 2020 - Monthly Note: - Weekly plan pages - 7 Additional Tabs for your projects - 2 Year planner page for 2019 & 2020 year ═════════ VIDEO TUTORIAL═══════════ How Instal planner from Email or Download Link www.youtube.com/watch?v=Eox1bZVJzZg How Install planner from dropbox www.youtube.com/watch?v=s_aKCnD3Xyo&t=2s HOW USE hyperlinks in Goodnotes www.youtube.com/watch?v=tI92ARaY7Aw&t=14s How sync ipad with iphone for goodnotes www.youtube.com/watch?v=tV_q33EMw5k&t=28s ═════════ IMPORTANT═══════════ ══ DIGITAL PRODUCTS ARE NON-REFUDABLE ══ * This planner was designed to work best with Goodnotes. This planner also works on apps that support PDF Annotations such a, Notes, or Notability, etc. This planner and any planner accessories are for personal use only and not intended for print production. Commercial use and resale are prohibited. All sales are final. Digital products are non-refundable. For personal u...
0 notes
polixy · 5 years ago
Text
U.S. churchgoers are satisfied with the sermons they hear, though content varies by religious tradition
U.S. churchgoers are satisfied with the sermons they hear, though content varies by religious tradition;
Tumblr media
(Michael Robinson Chavez/The Washington Post via Getty Images)
Tumblr media
Sermons are a major part of many churchgoers’ religious experiences. But there are differences by religious tradition in how satisfied churchgoers are with what they hear from the pulpit – as well as in the length and content of those sermons, according to two recent Pew Research Center studies.
An opinion survey of 6,364 U.S. adults conducted in 2019 found that 90% of Christians who attend worship services at least a few times a year are satisfied with the sermons they hear, though Protestants are somewhat more satisfied than Catholics.
Six-in-ten evangelical Protestants (61%) say they are “very satisfied” with the sermons they hear, almost twice as many as those who say they’re “somewhat satisfied” (32%). Among Catholics, only about a third (32%) say they’re “very satisfied,” while roughly half (52%) say they are “somewhat satisfied.” Catholics also have a higher share of respondents who say they’re “not too” or “not at all” satisfied (15% vs. 7% for Protestants).
How we did this
For the survey component of this post, we polled 6,364 U.S. adults from March 18 to April 1, 2019. The findings were originally published in the report “Americans Have Positive Views About Religion’s Role in Society, but Want It Out of Politics.” The data used in this post comes from a subgroup of respondents who identify as Christian and who say they attend church services a few times a year or more often. Everyone who took part in the survey is a member of Pew Research Center’s American Trends Panel (ATP), an online survey panel that is recruited through national, random sampling of residential addresses. Recruiting our panelists by phone or mail ensures that nearly all U.S. adults have a chance of selection. This gives us confidence that any sample can represent the whole population (see our Methods 101 explainer on random sampling).
To further ensure that each survey reflects a balanced cross-section of the nation, the data is weighted to match the U.S. adult population by gender, race, ethnicity, partisan affiliation, education and other categories. Read more about the ATP’s methodology.
Here are the questions used for the report, along with responses, and its methodology.
For the computational findings presented in this post, we analyzed the length and content of 49,719 sermons delivered at 6,431 U.S. congregations between April 7 and June 1, 2019. The results were originally published in the report “The Digital Pulpit: A Nationwide Analysis of Online Sermons.” Pew Research Center identified these sermons using web scraping, a technique that allows researchers to collect information from web pages. The churches were found via the Google Places application programming interface (API), a tool that provides information about establishments, geographic locations or points of interest listed on Google Maps. For more information, see the report’s methodology.
Though it is unclear from the survey why churchgoers’ satisfaction in sermons differ, sermons vary in length and content from one religious tradition to another, according to a separate Pew Research Center study based on a computational analysis of nearly 50,000 sermons livestreamed or shared by more than 6,000 U.S. churches in 2019. (The results of the study are not representative of all U.S. churches: The congregations that shared these sermons tend to be larger and more urban than U.S. congregations overall, and even these churches may not share all their sermons online.)
Catholic sermons are the shortest, at a median of just 14 minutes, compared with 25 minutes for mainline Protestant sermons and 39 minutes for evangelical Protestant sermons, according to the study. Historically black Protestant churches have the longest sermons by far: A median of 54 minutes, more than triple the length of the median Catholic homily posted online during the study period.
Tumblr media
While certain words appear in sermons across all of the Christian traditions in the study, each group uses certain words or phrases more often than other groups. Catholic priests, for example, are 21 times as likely as those in other churches to use the word “homily” and 15 times as likely to use “Eucharist” (both of these are elements of a Catholic service).
Evangelical sermons stand out for using the phrase “eternal hell” or variants like “eternity in hell” – though such phrases are rarely used even among evangelicals. Only one-in-ten evangelical congregations in the dataset heard “eternal hell” even once during the study period.
Some findings may be influenced by the computational study’s timing, which included Easter Sunday and some of Lent, or by calendars such as the common lectionary, which many faith traditions use to pick the Bible passages for their weekly readings.
Tumblr media
Meanwhile, clergy in the U.S. also differ in how frequently they cite books of the New and Old Testaments – or any scripture at all. Pastors in evangelical congregations are the most likely to reference at least one book of the Bible: 97% of evangelical sermons do so, compared with 94% of historically black Protestant sermons, 88% of mainline Protestant sermons and 73% of Catholic homilies. However, it’s worth noting that many religious traditions include Bible readings in every service, even if they are not mentioned in the sermon or homily that they share online.
Pastors in each of the four faith groups evaluated are more likely to mention the New Testament than the Old Testament. At least one book from the New Testament appears in 90% of sermons, while a book of the Old Testament is cited in 61% of sermons. Mainline Protestant and Catholic sermons cite less scripture overall, but their sermons exhibit the largest gaps between references to the New and Old Testaments.
; Blog – Pew Research Center; https://www.pewresearch.org/fact-tank/2020/01/28/u-s-churchgoers-are-satisfied-with-the-sermons-they-hear-though-content-varies-by-religious-tradition/; ; January 28, 2020 at 11:54AM
0 notes
technicallycoolalpaca · 6 years ago
Text
Design Question / Suggestions Wanted
So I'm looking to create an app with a particular purpose in mind and would love some suggestions/recommendations in terms of which tools to use. I am planning to write an app to track workouts (weightlifting, gymnastics, running, etc.).
My intent is to be able to enter in the various types of unique lifts or movements done on any given day. I was then hoping to create some visualizations based on frequency of various movements, muscle groups used, increases in weight over time and so on. There is also often a time component, as I do a lot of interval training, so I want to be able to keep track of pacing for particular movements. Dividing the total number of reps by the time taken is not sufficient here as work is often broken into 15 second intervals even though it is being done over the course of 10 minutes. In the end it is basically a very detailed and complicated fitness tracker.
I'm most familiar with Java/Spring, so intended to create a Spring Boot API, but was unsure of what to use beyond that. I have little to no experience working with NoSQL, which I imagine would work best here. There are plenty of different movements many of which I can't think of off the top of my head so I would like to design it in such a way that more can be added at any given time. I was hoping to extend those points with other features though, like linking them to the muscle groups a given movement utilizes and linking all of that to a given day on a calendar. I was looking at using something like Neo4j, but don't know enough about it or other NoSQL technologies, so there may very well be something else much better suited to someone with no prior experience like myself or just better for this particular use case.
If I did not provide enough detail I'm happy to add, just ask. Any help is greatly appreciated.
submitted by /u/TheDubiousDubber [link] [comments] from Software Development - methodologies, techniques, and tools. Covering Agile, RUP, Waterfall + more! https://ift.tt/2LHjWrD via IFTTT
0 notes
cpowellcade-blog · 6 years ago
Text
CUBI User Experience Model
The CUBI UX Model helps to quickly design creative solutions that engage users and solve real business problems.
WHICH PROFESSIONS PRACTICE THIS MODEL
Creatives, Designers, and User Experience Professionals
HOW IT DIFFERS FROM THE OTHER MODELS
To solve these common challenges, existing user experience models or frameworks were researched, and it was discovered that most UX diagrams were confusing, unorganized, complex or antiquated making them useless for designers and clients.
Henry Ford once said... "I invented nothing new. I simply assembled the discoveries of other men behind whom were centuries of work... Progress happens when all the factors that make for it are ready and then it is inevitable."
This model helps deconstruct the major components, which consist of:
Content
User Goals
Business Goals
Interaction
When considering the intersections on the diagram, there was the Process by which users navigate through content through the provided interactions, which includes attraction, reactions, actions and transactions.
Another set of intersections were Experience Factors (). In order to have an effective experience a product needs to be comprehensive, useful, usable and branded.
Tumblr media
WHERE IT EXCELS
The Benefits to the CUBI Model:
CREATIVITY: Creative experiences have the potential to greatly engage users and provide more unique brand experiences. The model provides a framework for presenting content more creatively, through use of a variety of techniques and methodologies.
COMMUNICATION: When terminology and language are common between designers, developers, and clients, it provides for greater communication and helps keep the strategy on-track.
SIMPLIFICATION: The terminology and practices that are a part of experience design can be vast and confusing. This model simplifies the complex design process, and delivers it in consumable bite-sized chunks, by outlining all the considerations that must be made throughout a project.
COLLABORATION: When we understand the factors involved with designing experiences, we then understand the different roles, teams, assets, and content required to execute on any given strategy. This understanding can help create a project plan and make it easier to delegate tasks.
GAPS: The model can help identify gaps within the design process. For example, a business may have established requirements, goals, and functionality for their marketing site, but maybe they haven't developed a content strategy—or they have only marketing research but haven't performed formal user research.
The Layers of CUBI
CONTENT: There are five layers to consider when incorporating content—Content Types, Models, Treatments, Methods, and Architecture.
Tumblr media
Content Types: Content is more than just text. Content includes a variety of media including photography, video, audio, data, and documents. For example, infographics combine text, data visualization, and illustration. It's also critical to inventory the different types of content and how the content can become object-oriented, which is when content is used in other contexts.
Content Models: Content models combine the different content types into a more recognizable model or format. For example, a recipe is a content model, which may include content types such as ingredients, instructions, and photography. The content model for a movie review may contain content types such as a movie description, ratings data, a list of actors, and a movie trailer.
Content Treatments: Content can also have applied aesthetics and treatments. For example, the visual style may include 2D illustration or the photography may be treated with a vintage style or duotone. Text may have a unique tone or personality based on the brand voice. Graphics may reflect a certain company culture or personality, which can be indicated in brand guidelines.
Content Methods: Content can be presented in more creative ways. It can be vastly more interesting and engaging when methods like storytelling, metaphors, analogy, symbolism, scenarios, challenges, or other creative concepts are applied.
Content Architecture: Content architecture is the structure and organization of information in a website or software system. It touches all content categories including content types and models and how content interlinks.
To summarize, Content Types are aggregated to create Content Models. The content types and models can have an applied Content Treatment. A Content Method can provide a narrative or framework for the content. All of these elements are organized through Content Architecture.
USER GOALS
There are five layers to consider when incorporating user goals: User Types, Needs, Motivations, Behaviors, and Outcomes.
Tumblr media
User Types: It’s important to understand the different user types that will use the end product. A common practice is to create user personas that detail their different roles, responsibilities, skill-levels, demographics (gender, age range, languages, locations, etc.) psychographics (personality, values, attitudes, interests, lifestyles) and where, when and how they will use the product.
Needs: Once user types are identified; it is critical to understand and define the relevant needs and aspirations that will help fulfill their goals. Some needs may be more simple, like finding documentation, while others are more complex more physiological or esteem needs. Additional examples of needs may include personal progression, accomplishment, mastery, recognition, status, belonging, expression, or a sense of purpose.
Motivations: Once the user needs are identified, we need to understand how users are motivated to fulfill those needs. This could be a wide range of intrinsic or extrinsic rewards or motivators, implemented with cues, design triggers, or other techniques.
Behaviors: Once the motivations are understood, it's important to research the user's current behaviors and how new motivations can potentially drive behavior change. With enough motivation and behavior change there is a greater likelihood of developing new habits and loyalty to a product and brand.
Outcomes: The combination of Needs, Motivations, and Behaviors can then translate into meaningful and measurable outcomes for users.
To summarize, each User Type has a set of Needs they are trying to fulfill. Users are Motivated to take action. Repeated Behaviors can produce significant user Outcomes. An example may be mother with a busy schedule (User Type) who Needs to train for a 10k. She might be Motivated by daily reminders and encouragement from friends to exercise (Behaviors) resulting in longer distance runs (Outcome).
BUSINESS GOALS
There are four layers to consider when incorporating business goals—Operations, Offerings, Outcomes, and Mission.
Tumblr media
Operations: Each project has operations that support the product, which can include people, resources, and other connected experiences. People involved in the project can be key business stakeholders, content contributors, subject matter experts, collaborators, administrators, recruited users and others involved in the project. Resources may include content data feeds, APIs, third-party tools, stock artwork, brand guidelines, existing user research, analytics or other resources. Connected Experiences can happen prior, during and after the experience. First, understand how users will find the product either through internal communications, advertising, the App Store, search engines or through social media. This helps make the communications consistent, congruent, professional, and focused. Then users may interact with departments like live customer support, technical support, human resources, or others. This understanding informs the designer how the company has the capacity to support user inquiries.
Offerings: The business may offer an ecosystem of products and/or services. It’s also important to understand how these products and services relate to each other. To communicate these offerings, the business should also have a value proposition, which states why a consumer should use the product or service versus other competitors.
Outcomes: The offerings ultimately support meaningful metrics and Key Performance Indicators that help support business success. KPIs may include financial performance, customer acquisition goals, increased customer satisfaction, employee performance metrics, call center metrics, or other indicators.
Mission: A mission statement provides the core purpose of an organization, its competitive advantages, its target audience, and the reason the organization exists. The mission statement should guide decisions and clearly define goals.
If customers have positive brand experiences and transactions, they provide business outcomes. To summarize, the Operations support the business Offerings. If customers have positive brand experiences and transactions, they provide business Outcomes, which help fulfill the business Mission.
INTERACTION
There are four layers to consider when incorporating interaction—Patterns, Systems, Devices, and Humans.
Tumblr media
Pattern Interaction: Design patterns (AKA Micro Interactions) are reusable components and interactions. Patterns include everything from headers and menus to calendars and maps. Resource libraries for patterns include Pattern Tap, Mobile Patterns, and pttrns.
System Interaction: The system can contain navigation, flows, feedback, and notifications to help the user progress and achieve their goals. The nature of the system can either be static, meaning that it is unchanged or dynamic meaning there is constant change or activity within the system. Dynamic systems can be regulated or self-regulated, meaning there are varying degrees of permissions and actions certain users perform based on their credentials. Systems can also be defined by the content management system or other system software, which may have a set of capabilities and limitations.
Device Interaction: When designing for an experience it’s key to understand the capabilities and constraints of the targeted devices, including screen sizes, connectivity, user interface conventions and other factors. The experience could happen with a variety of devices including phones, tablets, kiosks, terminals, watches, appliances or other things. For example, modern phones can support gestures, geolocation, accelerometers, audio recording, camera capabilities, push notifications and other features that are native to modern phones. User interface design considerations are also made to provide experiences that are ergonomic and comfortable when using certain devices.
 Human Interaction: The human interaction may be formal or informal, personal or interpersonal, social, or some other type of human interaction.
To summarize, a set of Patterns are provided in a System. The system can be available on multiple Devices to encourage certain types of Human Interaction.
EXPERIENCE FACTORS
Effective user experience is more than just the simple usability of a product. When creating the CUBI model, I concluded that there are at least four primary factors for effective experiences.
Tumblr media
★Branded Experience: A brand experience is not simply the visual identity. It’s the tonality and totality of the entire brand experience for a customer at any touchpoint. Any experience a user has with the business is a brand experience, whether it’s reviewing product information online, receiving live support from a call center, opening product packaging, or learning about the product or service from friends. The brand experience should convey to users that it’s credible, reliable, reputable, and that the company delivers on their promises. Brand communications and transactions can make or break brand loyalty.
★Comprehensive Experience: A comprehensive experience is one that is both comprehendible and extensive. A comprehensible experience is understandable, clear, uncluttered, properly labeled, scannable, organized, categorized, and lacks ambiguity. If there is an inordinate amount of corporate lingo, jargon, slang, or the messaging is not relatable, the experience may not resonate with users. An extensive experience provides users with a sense of completeness. Missing content can leave users unfulfilled. For example, if users don’t have enough information about company offerings on a homepage or within supporting pages, people may leave the site or delete the app.
★Useful Experience: A useful experience satisfies user needs, makes them feel empowered or productive, and helps them efficiently achieve their end goals. This can be measured by their changes in behaviors, actions, and performance or by other tangible means.
★Usable Experience: A usable experience is easy to use, intuitive, findable, learnable, legible, consistent, and provides prompts and feedback to communicate their progress in a system or process.
Usable experiences also:
Allow for forgiveness by allowing users to correct mistakes
Provide accessibility for those with impairments
Functionally work on the targeted devices and browsers
PROCESS FACTORS
When businesses provide systems for users to interact with, there are typically four process steps to consider.
Tumblr media
Communications: The intersection between business goals and content is communications. The branded content communicates comprehensive messaging to engage users.
Reactions: Users react to these communications and quickly decide if it’s something useful to them.
Actions: The reaction can motivate users to take action to fulfill a goal or perform a task. This could be prompted from a call to action, trigger, task list, dashboard or by other means.
Transactions: User actions then translate into business transactions. The types of transactions may include purchases, providing ratings on products or services, customer loyalty registration, etc.
The CUBI Outer Ring
Once the CUBI Model was developed, Corey Stern made the observation that user experience disciplines, tasks, and methods matched with the major components on the model forming a structured outer ring. This ring helps indicate the potential tasks and efforts required to execute on the strategy. It doesn’t have to be daunting or disorderly.
Please note that there are too many user experience disciplines and tasks to incorporate on this diagram.
Tumblr media
WHERE IT FALLS SHORT?
Some users agree that this model doesn't differ very much from past variations of UX models. These are good lists to run down when working on larger projects, but some users want more process behind it.
0 notes
api-training · 7 years ago
Video
API U Q1 9th EditionTraining Schedule Calander India 2019
Eurotech Announced API-U Q1 9th Edition Training Schedule/Calendar in 2019
0 notes
savetopnow · 7 years ago
Text
2018-03-29 03 LINUX now
LINUX
Linux Academy Blog
DynamoDB Atomic Counters
Linux Academy Weekly Roundup 111
Building a Vessel
New Version of LPI Linux Essentials Course
Linux Academy Weekly Roundup 110
Linux Insider
Neptune 5: A Practically Perfect Plasma-Based Distro
LG Offers Open Source webOS to Spur Development in South Korea
Google Opens Maps APIs and World Becomes Dev Playground
New Raspberry Pi Packs More Power
SpaceChain, Arch Aim to Archive Human Knowledge in Space
Linux Journal
Product Review: GitStorage
Reversal on Google vs. Oracle Case, Microsoft Open Sources WSL for Linux Distro Maintainers, New Acer Chromebook Tab 10 and More
Best Programming Language
Thinking and Working Outside the Platform
diff -u: Speeding Up the Un-Speed-Up-able
Linux Magazine
Gnome 3.28 Released
Install Firefox in a Snap on Linux
OpenStack Queens Released
Kali Linux Comes to Windows
Ubuntu to Start Collecting Some Data with Ubuntu 18.04
Linux Today
Docker Founder Solomon Hykes Announces Exit from Docker Inc.
Red Hat Earnings Foretell Good Times for Open Source Businesses
Working with calendars on Linux
Zorin OS For Linux Newbies
Valve to open source 'GameNetworkingSockets' to help developers with networking, Steam not required
Linux.com
Hyperledger Sawtooth: A Milestone for Blockchain Technology
Through the Looking Glass: Security and the SRE
Juniper's OpenContrail SDN Rebranded as Tungsten Fabric
How to Monitor Network Protocol Traffic on your Data Center Linux Servers
12 Kubernetes Distributions Leading the Container Revolution
Reddit Linux
Super long-term kernel support
Why I use Flatpak for 3rd party apps
Google loses Android battle and could owe Oracle billions of dollars
The Alliance for Open Media Kickstarts Video Innovation Era with "AV1" Release
Returning to linux after 7 years. Need advice.
Riba Linux
How to install Archman Xfce 18.03
Archman Xfce 18.03 overview
How to Install HardenedBSD 11 Stable v1100055 plus Gnome desktop and basic applications
How to install Zorin OS 12.3
Zorin OS 12.3 overview | Your Computer. Better. Easier. Faster.
Slashdot Linux
Ecuador Cutting Off WikiLeaks Founder Julian Assange's Communications Outside London Embassy
Cities Worldwide Spent Over $3 Billion Last Year To Peep On You
An Open Source, Royalty-Free AV1 Codec Has Been Released
90 Percent of Affiliate Ads on YouTube and Pinterest Aren't Disclosed, Says Study
Ask Slashdot: Why Are There No True Dual-System Laptops Or Tablet Computers?
Softpedia
Linux Kernel 4.15.14 / 4.16 RC7
Linux Kernel 4.14.31 LTS / 4.9.91 LTS / 4.4.124 LTS / 4.1.51 LTS / 3.18.102 EOL / 3.16.56 LTS
OpenSSL 1.1.0h
DragonFly BSD 5.0.2 / 5.2.0 RC
Container Linux by CoreOS 1688.4.0
Tecmint
Cricket-CLI – Watch Live Cricket Scores in Linux Terminal
Ternimal – Show Animated Lifeform in Your Linux Terminal
Tilix – A New GTK 3 Tiling Terminal Emulator for Linux
How to Backup Your Files to Amazon S3 Using CloudBerry Backup on Linux
Suplemon – A Powerful Console Text Editor with Multi Cursor Support
nixCraft
Raspberry PI 3 model B+ Released: Complete specs and pricing
Debian Linux 9.4 released and here is how to upgrade it
400K+ Exim MTA affected by overflow vulnerability on Linux/Unix
Book Review: SSH Mastery – OpenSSH, PuTTY, Tunnels & Keys
How to use Chomper Internet blocker for Linux to increase productivity
0 notes
masaa-ma · 8 years ago
Text
golangでgRPCを使ったAPIServerを作ってみる
from https://developers.eure.jp/eureka-grpc-go
はじめに
この記事は、 eureka Advent Calendar 2017 5日目の記事で��。
こんにちは、エウレカでCTO(*Cat Tech Officer)を営む傍、サーバーサイドエンジニアとして 日々生計を立てている@marnie-eureです。
2015年にgRPCが発表されてから、2年が経ちましたね。 国内外の大手企業でのgRPCの事例も増えてきました。
これからのご時勢、gRPCの一つも使えないのでは、愛する猫たちを養っていくことも難しいかもしれない。
そんな危機感にかられたので、今回はふわふわっとgRPCを使ってAPIを作ってみようと思います。
(注) CTO(Chief Tech Officer)は@kaneshinなので 猫以外の話 はそちらにお問い合わせください。
gRPC Basics
gRPC?
gRPCは、Googleによって開発されたRPCフレームワークです。 HTTP/2を使用した通信層(ProtocolBuffersでシリアライズ)とProtocolBuffers(標準)としたテンプレートコードの生成がセットで提供されています。
勿論、HTTP2のstreamもサポートしています。 gRPCのRPC方式は以下の通り。
Unary RPC (1リクエスト1レスポンス)
Server streaming RPC (1つのリクエストに複数レスポンス)
Client streaming RPC (複数のリクエストに一つのレスポンス)
Bidirectional streaming RPC(双方向)
対応言語/platformも幅広く
C++
go
Ruby
Android Java
PHP
Objective-C
等の複数言語をサポートしています。
実装してみる
eurekaでは主にgolangを採用してますので、golangで実装します
前準備
gRPCをインストールします。
go get -u google.golang.org/grpc
protoファイルからコード生成をするコンパイラ(protoc)をインストールします。
protocのダウンロードはos別にこちらから 私の環境がosx-x86_64なので今回は protoc-3.5.0-osx-x86_64.zip を利用します。
PATHの通ったディレクトリに解凍したディレクトリの/bin の中のバイナリを移してあげてください。
protocのGo用のプラグインをインストールします。
go get -u github.com/golang/protobuf/protoc-gen-go
.protoファイルにインターフェースを定義する
gRPCをベースにした開発では、まずはIDLを使ってprotoにAPIの定義を書きます。
ProtocolBuffer以外もサポートはしているようですが、 ツール周りやドキュメントが一番手厚いし、標準に寄り添って行きたい民なので、今回はprotocolBufferで.protoファイルを作ります。
syntax = "proto3"; service Cat { rpc GetMyCat (GetMyCatMessage) returns (MyCatResponse) {} } message GetMyCatMessage { string target_cat = 1; } message MyCatResponse { string name = 1; string kind = 2; }
proto3の型や各言語の型の対応はgoogleのドキュメント、基本のscalar型以外を使いたい場合はgoogle/protobufをimportする感じで。
.proto ファイルからserver、client,interface等のコードを生成する
定義から各言語のベースとなるコードの自動生成をします。
protocコマンドを実行します。
protoc --go_out=plugins=grpc:../pb cat.proto
成功すると xxxx.pb.go が生成されます。
xxxx.pb.go ファイルには、protoで定義した以下が含まれています。
request
response
client,serverのinterface
registerMethod
プラットフォームまたいでも、同一の定義からこの辺のコードが生成できるのは楽ですね proto3のscalar型がgoのtime型やint型などに対応してたら嬉しかったのですが、今時点では対応してなかったのがやや辛み…
protocによるdocument生成
protocでdocumentの生成もできます。わーい。
protoc --doc_out=html,index.html:./ proto/*.proto
pb.goファイルを参照してサーバーとクライアントの実装
生成されたpb.goに含まれるinterfaceに沿って、実処理とserverとclientを実装します
service (実処理)
作られたxxx.pb.goのinterfaceを満たすように実装します。
xxx.pb.go type CatServer interface { GetMyCat(context.Context, *GetMyCatMessage) (*MyCatResponse, error) }
serviceって名称は、公式やprotoの呼称から取ってきただけなのでお好みで。
package service import ( "context" "errors" pb "marnie_playground/grpc-sample/pb" ) type MyCatService struct { } func (s *MyCatService) GetMyCat(ctx context.Context, message *pb.GetMyCatMessage) (*pb.MyCatResponse, error) { switch message.TargetCat { case "tama": //たまはメインクーン return &pb.MyCatResponse{ Name: "tama", Kind: "mainecoon", }, nil case "mike": //ミケはノルウェージャンフォレストキャット return &pb.MyCatResponse{ Name: "mike", Kind: "Norwegian Forest Cat", }, nil } return nil, errors.New("Not Found YourCat") }
server
gRPC関連で書く必要があるコードは
port listen
作った実処理の登録,serve
だけです。interceptor chain等は用途に応じて。
package main import ( "log" "net" pb "marnie_playground/grpc-sample/pb" "marnie_playground/grpc-sample/service" "google.golang.org/grpc" ) func main() { listenPort, err := net.Listen("tcp", ":19003") if err != nil { log.Fatalln(err) } server := grpc.NewServer() catService := &service.MyCatService{} // 実行したい実処理をseverに登録する pb.RegisterCatServer(server, catService) server.Serve(listenPort) }
client
package main import ( "context" "fmt" "log" pb "marnie_playground/grpc-sample/pb" "google.golang.org/grpc" ) func main() { //sampleなのでwithInsecure conn, err := grpc.Dial("127.0.0.1:19003", grpc.WithInsecure()) if err != nil { log.Fatal("client connection error:", err) } defer conn.Close() client := pb.NewCatClient(conn) message := &pb.GetMyCatMessage{"tama"} res, err := client.GetMyCat(context.TODO(), message) fmt.Printf("result:%#v \n", res) fmt.Printf("error::%#v \n", err) }
FactoryMethodとClientInterfaceが提供されているので、Connection作成してメソッドを呼び出すだけです。
ビルド & テスト
出来あがったclientとserverをそれぞれgo build,実行すれば出来上がり。
./client result:&cat.MyCatResponse{Name:"tama", Kind:"mainecoon"} error::<nil>
middleware(interceptor)
logging,auth,recovery的な物はinterceptorとかmiddleware的な物を作ってやれると 既存のプロジェクトからの移行もスムーズかなーと思っていたので、調べてみました。
interceptorは型定義されてますので、下記を満たすようなインターフェースで実装します。
google.golang.org/grpc/interceptor.go //UnaryRPCならこっち type UnaryServerInterceptor func(ctx context.Context, req interface{}, info *UnaryServerInfo, handler UnaryHandler) (resp interface{}, err error) //StreamRPCならこっち type StreamServerInterceptor func(srv interface{}, ss ServerStream, info *StreamServerInfo, handler StreamHandler) error
利用するRPC方式によってgrpc.UnaryServerInterceptor() ないし grpc.StreamInterceptor()で grpc.ServerOptionに変換すればOKです
大雑把なイメージは以下のような感じ。
<br />func MiddlewareFunc(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) // 処理かく } func main() { //中略 middleware := &YourMiddleware{} opt := []grpc.ServerOption{grpc.UnaryInterceptor(MiddlewareFunc)} server := grpc.NewServer(opt...) }
grpc-middleware に何個か実装されたmiddleware(cf. logrus,validator)がありますので、 独自のmiddlewareを実装する場合はこの辺参考にすれば良いのかなと思います
まとめ
主要な通信層の処理は提供されているので、HTTP/2関連の実装は必要ない。
protoからボイラーテンプレートコードやドキュメントも作られるのは楽。
middlewareも増えている。
コードの自動生成によって本来時間をかけるべき、機能実装に集中できる HTTP/2による高速化/stream用途や、protobuff標準でのコード生成という所が包括的に提供されるといった恩恵を受けられるのは大きなメリットだなぁと感じます。
フルスタックフレームワークと較べるのは、主旨が異なるので要件や選定において重視する所次第って感じですが、マイクロフレームワーク���使うような構成を検討していたり、ストリーミング通信が要件に含まれているのであれば採用するメリットははあると考えています
細々、下記のような気になる所はありましたが
proto3がgoの型を全て網羅してるわけではなさそうなので、applicationLayerの既存コードの型合わない場合は変換層とか必要そう。
curlでポチッと、みたいなのが使えなくなったので、テストがちょっと大変。grpc-gatewayでも使うべきなのかしら。
まぁデメリットと言うほどではないかな〜って気も。 テスト手段やエコシステム、ミドルウェアは今後、充実していく気もするし、既に必要十分ではあると思うので。
あとがき
今回はチュートリアル的な所と周辺情報を通して基本的な流れと所感を書いてみましたが、 eurekaでは実際に一部のmicro serviceのgRPC導入/移行を進行しています。 (既存コードとの兼ね合いで記事までに間に合いませんでした。てへぺろ
go+gRPCでの開発やeurekaに興味が持てた方(猫愛があれば尚良)は、是非お気軽にお話に来てくだされば!
それでは、2017年も残り少ないですが、日々猫への感謝を忘れず、過ごしていきましょう!!
参考にした資料/Repsitory Thanks!
grpc goDoc grpc.io grpc-middleware grpc-echosystem google/protobuf protocol-buffers docs
https://developers.eure.jp/wp-content/uploads/2016/12/nyan-1.png
0 notes
randalljsumner · 5 years ago
Text
Daily U.S. Session Watchlist: AUD/USD
AUD/USD hits the top of the watchlist today ahead of top tier data from Australia. Will recent consolidation lead to a breakout?
Before moving on, ICYMI, today’s Daily London Session Watchlist looked at an opportunity forming on the uptrend in NZD/USD, so be sure to check that out to see if there is still a potential play!
Intermarket Snapshot
Equity Markets Bond Yields Commodities & Crypto DAX: 12818.21 -0.16% FTSE: 6126.38 +0.35% S&P 500: 3230.90 -0.26% DJIA: 26432.26 -0.57% US 10-YR: 0.584 % -0.025 Bund 10-YR: -0.515% +0.009 UK 10-YR: 0.101% -0.025 JPN 10-YR: 0.023% +0.003 Oil: 41.24 -0.87% Gold: 1,941.40 +0.53% Bitcoin: 11,158.29 +1.51% Ethereum: 319.53 -1.27%
Fresh Market Headlines & Economic Data:
Dow futures drop more than 100 points as McDonald’s falls, GOP unveils coronavirus relief plan
The Fed is extending its lending programs until the end of the year
US Home prices rose at a slower rate in May, according to S&P Case-Shiller
The Richmond Fed manufacturing index rose from 0 in June to 10 in July
Oil falls as U.S. fiscal package faces tough talks
Spain jobless level hits 15.3% in second quarter
European Central Bank extends bank ban on dividends and stock buybacks
U.K. Retail sales stabilise but non-essential retailers continue to struggle – CBI
Upcoming Potential Catalysts on the Economic Calendar for U.S. & Asia:
API Crude Oil Stock Change at 8:30 pm GMT
U.K. BRC Shop Price Index at 11:00 pm GMT
Australia Inflation Rate at 1:30 am GMT (July 29)
Bank of Japan Amamiya speech at 5:30 am GMT (July 29)
What to Watch: AUD/USD
AUD/USD 1-Hour Forex Chart
On the one hour chart of AUD/USD, we can see that the pair has kinda gone no where for the past week, trading between 0.7070 – 0.7175. This indecisiveness may be stemming from the recent negative bias on the Greenback vs. rising global risk aversion sentiment as COVID-19 cases spiked higher, including in Australia.
But that consolidation could break with the latest Australian inflation update on the way. Expectations are for a -2.1% q/q read, far below the previous read of 0.3%, which could cause traders to shift their outlook on monetary policy stimulus measures if inflation is expected to decline rapidly.
For the bulls, the trend is currently on your side, and if the AU CPI number comes out better-then-expected, look for a break above the minor resistance area (0.7175) and for sustained trading above that level before considering long positions.
Also watch out for a pullback ahead of the event as traders may price in the negative expectations before hand.  If so, bullish reversal patterns around the minor consolidation area around 0.7070 could draw in buyers if the number comes in better-than-expected.
For the bears, a much weaker-than-expected AU CPI number will likely draw in traders who may price in more stimulus efforts from the RBA, and a break below the rising ‘highs’ pattern is the signal to watch before considering a short position. A break below that area with a round of strong global risk aversion sentiment could take the pair down to the major psychological level of 0.7000.
But if broad risk sentiment remains steady, the previous swing low down to the minor psychological level of 0.7050 is a more realistic target given the daily ATR of around 70 pips.
Source link
The post Daily U.S. Session Watchlist: AUD/USD appeared first on Veteran Wealth.
from Veteran Wealth https://veteranwealthmgntmarketnews.com/index.php/2020/07/28/daily-u-s-session-watchlist-aud-usd/ from Veteran Wealth Management https://machinetrading-autotrading.tumblr.com/post/624903633718362112
0 notes
danarglenn · 5 years ago
Text
Daily U.S. Session Watchlist: AUD/USD
AUD/USD hits the top of the watchlist today ahead of top tier data from Australia. Will recent consolidation lead to a breakout?
Before moving on, ICYMI, today’s Daily London Session Watchlist looked at an opportunity forming on the uptrend in NZD/USD, so be sure to check that out to see if there is still a potential play!
Intermarket Snapshot
Equity MarketsBond YieldsCommodities & CryptoDAX: 12818.21 -0.16% FTSE: 6126.38 +0.35% S&P 500: 3230.90 -0.26% DJIA: 26432.26 -0.57%US 10-YR: 0.584 % -0.025 Bund 10-YR: -0.515% +0.009 UK 10-YR: 0.101% -0.025 JPN 10-YR: 0.023% +0.003Oil: 41.24 -0.87% Gold: 1,941.40 +0.53% Bitcoin: 11,158.29 +1.51% Ethereum: 319.53 -1.27%
Fresh Market Headlines & Economic Data:
Dow futures drop more than 100 points as McDonald’s falls, GOP unveils coronavirus relief plan
The Fed is extending its lending programs until the end of the year
US Home prices rose at a slower rate in May, according to S&P Case-Shiller
The Richmond Fed manufacturing index rose from 0 in June to 10 in July
Oil falls as U.S. fiscal package faces tough talks
Spain jobless level hits 15.3% in second quarter
European Central Bank extends bank ban on dividends and stock buybacks
U.K. Retail sales stabilise but non-essential retailers continue to struggle – CBI
Upcoming Potential Catalysts on the Economic Calendar for U.S. & Asia:
API Crude Oil Stock Change at 8:30 pm GMT
U.K. BRC Shop Price Index at 11:00 pm GMT
Australia Inflation Rate at 1:30 am GMT (July 29)
Bank of Japan Amamiya speech at 5:30 am GMT (July 29)
What to Watch: AUD/USD
AUD/USD 1-Hour Forex Chart
On the one hour chart of AUD/USD, we can see that the pair has kinda gone no where for the past week, trading between 0.7070 – 0.7175. This indecisiveness may be stemming from the recent negative bias on the Greenback vs. rising global risk aversion sentiment as COVID-19 cases spiked higher, including in Australia.
But that consolidation could break with the latest Australian inflation update on the way. Expectations are for a -2.1% q/q read, far below the previous read of 0.3%, which could cause traders to shift their outlook on monetary policy stimulus measures if inflation is expected to decline rapidly.
For the bulls, the trend is currently on your side, and if the AU CPI number comes out better-then-expected, look for a break above the minor resistance area (0.7175) and for sustained trading above that level before considering long positions.
Also watch out for a pullback ahead of the event as traders may price in the negative expectations before hand.  If so, bullish reversal patterns around the minor consolidation area around 0.7070 could draw in buyers if the number comes in better-than-expected.
For the bears, a much weaker-than-expected AU CPI number will likely draw in traders who may price in more stimulus efforts from the RBA, and a break below the rising ‘highs’ pattern is the signal to watch before considering a short position. A break below that area with a round of strong global risk aversion sentiment could take the pair down to the major psychological level of 0.7000.
But if broad risk sentiment remains steady, the previous swing low down to the minor psychological level of 0.7050 is a more realistic target given the daily ATR of around 70 pips.
Source link
The post Daily U.S. Session Watchlist: AUD/USD appeared first on Veteran Wealth.
from https://veteranwealthmgntmarketnews.com/index.php/2020/07/28/daily-u-s-session-watchlist-aud-usd/
from Veteran Wealth Management - Blog https://machinetrading-autotrading.weebly.com/blog/daily-us-session-watchlist-audusd
0 notes
Text
Daily U.S. Session Watchlist: AUD/USD
AUD/USD hits the top of the watchlist today ahead of top tier data from Australia. Will recent consolidation lead to a breakout?
Before moving on, ICYMI, today’s Daily London Session Watchlist looked at an opportunity forming on the uptrend in NZD/USD, so be sure to check that out to see if there is still a potential play!
Intermarket Snapshot
Equity Markets Bond Yields Commodities & Crypto DAX: 12818.21 -0.16% FTSE: 6126.38 +0.35% S&P 500: 3230.90 -0.26% DJIA: 26432.26 -0.57% US 10-YR: 0.584 % -0.025 Bund 10-YR: -0.515% +0.009 UK 10-YR: 0.101% -0.025 JPN 10-YR: 0.023% +0.003 Oil: 41.24 -0.87% Gold: 1,941.40 +0.53% Bitcoin: 11,158.29 +1.51% Ethereum: 319.53 -1.27%
Fresh Market Headlines & Economic Data:
Dow futures drop more than 100 points as McDonald’s falls, GOP unveils coronavirus relief plan
The Fed is extending its lending programs until the end of the year
US Home prices rose at a slower rate in May, according to S&P Case-Shiller
The Richmond Fed manufacturing index rose from 0 in June to 10 in July
Oil falls as U.S. fiscal package faces tough talks
Spain jobless level hits 15.3% in second quarter
European Central Bank extends bank ban on dividends and stock buybacks
U.K. Retail sales stabilise but non-essential retailers continue to struggle – CBI
Upcoming Potential Catalysts on the Economic Calendar for U.S. & Asia:
API Crude Oil Stock Change at 8:30 pm GMT
U.K. BRC Shop Price Index at 11:00 pm GMT
Australia Inflation Rate at 1:30 am GMT (July 29)
Bank of Japan Amamiya speech at 5:30 am GMT (July 29)
What to Watch: AUD/USD
AUD/USD 1-Hour Forex Chart
On the one hour chart of AUD/USD, we can see that the pair has kinda gone no where for the past week, trading between 0.7070 – 0.7175. This indecisiveness may be stemming from the recent negative bias on the Greenback vs. rising global risk aversion sentiment as COVID-19 cases spiked higher, including in Australia.
But that consolidation could break with the latest Australian inflation update on the way. Expectations are for a -2.1% q/q read, far below the previous read of 0.3%, which could cause traders to shift their outlook on monetary policy stimulus measures if inflation is expected to decline rapidly.
For the bulls, the trend is currently on your side, and if the AU CPI number comes out better-then-expected, look for a break above the minor resistance area (0.7175) and for sustained trading above that level before considering long positions.
Also watch out for a pullback ahead of the event as traders may price in the negative expectations before hand.  If so, bullish reversal patterns around the minor consolidation area around 0.7070 could draw in buyers if the number comes in better-than-expected.
For the bears, a much weaker-than-expected AU CPI number will likely draw in traders who may price in more stimulus efforts from the RBA, and a break below the rising ‘highs’ pattern is the signal to watch before considering a short position. A break below that area with a round of strong global risk aversion sentiment could take the pair down to the major psychological level of 0.7000.
But if broad risk sentiment remains steady, the previous swing low down to the minor psychological level of 0.7050 is a more realistic target given the daily ATR of around 70 pips.
Source link
The post Daily U.S. Session Watchlist: AUD/USD appeared first on Veteran Wealth.
from Veteran Wealth https://veteranwealthmgntmarketnews.com/index.php/2020/07/28/daily-u-s-session-watchlist-aud-usd/
0 notes
digital-planners · 5 years ago
Link
For just $15.00 Digital Happy Planner 2019 2020 Erin Life Monthly planner Weekly Organizer iPad Calendar Notability Goodnotes ═══════════ HOW IT WORKS ══════════ !!! FOR USE THIS PLANNER YOU NEED NOTES APP FOR iPad - some of this - Noteshelf2, Goodnotes 4-5, Notability, Notes Plus, Zoom Notes ════════════════════════════════ You will receive Digital PDF Planner MONDAY & SUNDAY CALENDAR START ════════════ FEATURES ════════════ You will receive 2 digital planner - Monday start and Sunday start calendar Start - July 2019 - End - December 2020 1) Monthly Pages 2) Weekly Pages 3) Additional Pages 4) Year Planner Pages FOR Goodnotes or Notability or Xodo and Note Plus and Noteshelf2, ZoomNotes Detail • 218 pages in 1 PDF file with Hyperlinks • Optimized for GoodNotes and Notability, Notechelf2, on iPad Pro and Xodo for Android Tablet • Single PDF (digital download) ══════════ NAVIGATIONS ═══════════ What you will get: A dated planner with over 218 pages and 5 000 links, including: - Yearly calendar for 2019 and 2020 - Month Calendar (18 month) July 2019 - December 2020 - Monthly Note: - Weekly plan pages - 7 Additional Tabs for your projects - 2 Year planner page for 2019 & 2020 year ═════════ VIDEO TUTORIAL═══════════ How Instal planner from Email or Download Link www.youtube.com/watch?v=Eox1bZVJzZg How Install planner from dropbox www.youtube.com/watch?v=s_aKCnD3Xyo&t=2s HOW USE hyperlinks in Goodnotes www.youtube.com/watch?v=tI92ARaY7Aw&t=14s How sync ipad with iphone for goodnotes www.youtube.com/watch?v=tV_q33EMw5k&t=28s ═════════ IMPORTANT═══════════ ══ DIGITAL PRODUCTS ARE NON-REFUDABLE ══ * This planner was designed to work best with Goodnotes. This planner also works on apps that support PDF Annotations such a, Notes, or Notability, etc. This planner and any planner accessories are for personal use only and not intended for print production. Commercial use and resale are prohibited. All sales are final. Digital products are non-refundable. For personal u...
0 notes
superstartvnews · 5 years ago
Quote
An invasion of Asian big hornets became the newest 2020 worry — and web sensation — because the term “murder hornet” began to trend over the weekend. The first recognizing of the two-inch Asian hornet, or genus Vespa mandarinia, was verified within the u.  s. in Gregorian calendar month, consistent with the Washington State Department of Agriculture. The insect doesn't typically target folks or pets, however may be a deadly threat to the already at-risk Apis mellifera hives. Giant hornets of this species apparently enter a “slaughter phase” wherever they kill honeybees and destroy entire hives within the span of a couple of hours, consistent with the department. Although the species was 1st noticed months past, the term “murder hornet” circulated on Twitter over the weekend when a replacement royal house Times report weekday on efforts to prevent the species from annihilating honeybees. As the globe reels with the upheaval of traditional life throughout the coronavirus pandemic, the web fast onto “murder hornets” yet another strange development of 2020. “Murder hornets. Sure thing, 2020,” actor and comedian Patton Oswalt tweeted weekday. “Give America everything. Hypno-frogs. soiled blizzards. bathroom tsunamis. A CATS sequel. we will take it.”
http://www.superstartv.media/2020/05/warning-asian-giant-hornet-invasion.html
0 notes
kennethherrerablog · 6 years ago
Text
The 12 Best Bank Promotions of 2019 (We’re Talking Cash Bonuses up to $750)
So, you’re looking for a new bank account.
You’ve got several factors to consider — including bank promotions. Wouldn’t it be nice to fund your shiny new account with some extra cash?
Many banks offer sign-up bonuses. No, these bonuses aren’t always advertised, but we did some digging and found you some hefty cash offers.
Best Bank Promotions of 2019
We’ve spent days researching the best cash bonuses available this year so you don’t have to. Below, you’ll find our favorite checking and savings account bonuses.
Keep an eye on what it takes to qualify as well as any limitations. Direct deposit and minimum balances are commonly factors in securing these bonuses. Otherwise, happy bank bonus shopping!
1. Chase Total Checking and Savings Account: up to $350
Visit this Chase Total Checking® page to apply online, or enter your email address to get a unique coupon to take with you to open your account at any Chase branch before July 15, 2019.
Get a $200 bonus when you open a new Chase Total Checking® account and set up direct deposit.
Get a $150 bonus when you open a new Chase Savings(SM) account, deposit a total of $10,000 or more in new money within 20 days, and maintain a $10,000 balance for 90 days. You’re not required to open the savings account to earn the $200 Chase checking bonus.
This offer is available in Arizona, California, Colorado, Connecticut, Delaware, Florida, Georgia, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, New Jersey, Nevada, New York, Ohio, Oklahoma, Oregon, Tennessee, Texas, Utah, Washington, Wisconsin and West Virginia.
2. TD Bank Premier Checking Account: $300
Bonus: $300
To qualify: You must receive a total of $2,500 or more via direct deposit within 60 days of opening your new account. Then, the $300 bonus will be deposited into your account within 95 days of opening.
Limitations: This account is not available in every state, so be sure to check. Additionally, there’s no minimum to open an account, but you must maintain a minimum daily balance of $2,500 to waive the $25 monthly maintenance fee.
Sign up: Visit this TD Checking® page, and enter your city and state. Click the orange “open account” button, and follow the instructions to open a TD Premier Checking℠ account.
3. TD Bank Convenience Checking Account: $150
Bonus: $150
To qualify: You must direct deposit a total of $500 or more into your new account within 60 days of opening. The $150 bonus will be deposited into your account within 95 days of opening.
Limitations: There’s no minimum balance requirement to open an account, but you should maintain a $100 daily minimum daily balance so TD Bank will waive monthly fees.
Sign up: Visit this TD Checking® page, and enter your city and state. Click the orange “open account” button, and follow the instructions to open a TD Convenience Checking℠ account.
4. BMO Harris Smart Advantage Checking Account: $200
Bonus: $200
To qualify: You must have at least two direct deposits of $500 or more post to your account within 90 days of opening. Additionally, you’ll need to make at least 10 qualifying debit card purchases with your new BMO Harris card within those 90 days.
Limitations: You must live in a state with a BMO Harris branch. These states include Arizona, Florida, Illinois, Indiana, Kansas, Missouri, Minnesota and Wisconsin.
Sign up: Use the “open an account” link on the BMO Harris checking page, and your promo code will automatically be applied. You can also enter your email address to receive the promo code to take to a nearby branch.
Offer expires May 31, 2019.
5. Wells Fargo Everyday Checking Account: $400
Bonus: $400
To qualify: After opening your new account, you must make a minimum welcome deposit of $25. Then set up direct deposit, and funnel at least $3,000 into your account for three straight months.
Limitations: This is an online-only offer available to new Wells Fargo checking customers.
Sign up: Open your Wells Fargo Everyday Checking Account here. Your bonus will deposit into your account within 45 calendar days of meeting the requirements.
Offer expires July 26, 2019.
6. SunTrust Advantage Checking Account: $250
Bonus: $250
To qualify: You’ll need an opening deposit of $100 (due within 14 days of opening your new account). Additionally, you must direct deposit at least $3,000 into your account and make at least 10 debit card purchases within 60 days of opening.
Limitations: You must be a new customer with SunTrust and live in one of these states: Alabama, Arkansas, Georgia, Florida, Maryland, Mississippi, North Carolina, South Carolina, Tennessee, Virginia or the District of Columbia.
Sign up: Apply online through the orange “open now” link on this page, so the promo code automatically applies. Or enter your email address, and SunTrust bank will send you a coupon you can take to your local branch.
Offer expires April 30, 2019.
7. HSBC Choice Checking Account: up to $750
Bonus: $200
To qualify: Deposit at least $1,500 into your new account within 30 days of its opening, then maintain that minimum balance for 90 days.
Limitations: The offer is only available for online applicants. Existing HSBC customers aren’t eligible.
Sign up: Use this promotional link and click “Apply now” on any of the three checking account offers.
(Note: The Choice checking account, featured here, requires the lowest minimum deposit. The HSBC Advance Checking account requires a $10,000 deposit and yields a $350 bonus, and the HSBC Premier Checking account requires a $100,000 deposit and yields a $750 bonus.)
Offer expires June 2, 2019.
8. Capital One 360 Money Market Account: up to $500
Bonus: Up to $500 — plus, it acts as an online savings in that you’ll earn 2.00% annual percentage yield (APY) on accounts with a balance of $10,000 or more.
To qualify: You must deposit at least $10,000 within your first 10 days of opening the account. You’ll get the $500 balance if you have a balance of $50,000 or more or a $200 bonus if you have a balance between $10,000 and $49,999.99.
Limitations: You cannot have an existing Capital One savings product.
Sign up: Use promo code EARN500 when opening your 360 Money Market account.
Offer expires May 19, 2019.
9. Bank of America Advantage Banking: $100
Bonus: $100
To qualify: Set up and receive at least two direct deposits of $250 or more within 90 days.
Limitations: This offer is good for those who don’t already have a personal checking account with Bank of America.
Sign up: Open one of Bank of America’s Advantage banking accounts through this link. Click “open now.” (It’s tricky hunting down this offer on its site.) You’ll see three checking account options: SafeBalance Banking, Plus Banking and Relationship Banking. Each one requires different opening deposits but offers that same $100 bonus.
Offer expires December 31, 2019.
10. PNC Bank Virtual Wallet With Performance Spend: $200
Bonus: $200
To qualify: Within 60 days of opening your new account, direct deposit at least $2,000 and make at least 10 purchases with the PNC Bank Visa debit card that’s linked to your account.
Limitations: This offer is restricted to residents in Alabama, District of Columbia, Delaware, Florida, Georgia, Illinois, Indiana, Kentucky, Maryland, Michigan, Missouri, New Jersey, New York, North Carolina, Ohio, Pennsylvania, South Carolina, Virginia, Wisconsin and West Virginia.
Sign up: Use this offer link to open an account online, or opt to receive a coupon via email to take to your nearest PNC bank branch.
Offer expires May 31, 2019.
11. Huntington Bank Huntington 5 Checking Account: $200
Bonus: $200
To qualify: Deposit at least $1,000 within 60 days of opening your account. (No direct deposit requirement for this bank promotion!)
Limitations: The offer is available to new Huntington customers located in Illinois, Indiana, Kentucky, Michigan, Ohio, Pennsylvania and West Virginia.
Sign up: Head over to the Huntington Bank offers page and choose to sign up online or at a local branch.
Offer expires June 30, 2019.
12. BB&T Bright Banking Checking Account: $200
Bonus: $200
To qualify: Within 75 days of opening your new checking account, you must: Set up and receive at least two direct deposits of $100 or more each month, or carry out three online bill pays of at least $25 with U by BB&T (its mobile banking app). Additionally, to avoid the $12 monthly maintenance fee, you must direct deposit at least $500 or more into your account or maintain an average balance of $1,500.
Limitations: You cannot be an existing BB&T customer.
Sign up: Use this link to sign up online.
Offer expires May 23, 2019.
How to Search for Bank Promotions on Your Own
In the spirit of not listing approximately 193 bank promotions, we kept this list short and sweet — only highlighting the best bank promotions for checking and savings accounts.
But maybe you’re interested in banking with your local credit union, opening up a small business checking account or finding the perfect investment account? There are often bonus offers attached to these account openings, too.
The banks don’t always make finding these promotions easy, so here are a few tips to help you get your hands on that cash bonus.
Check the bank’s website first. Sometimes it’ll advertise its promotions right there. This is rare, but it’s worth a quick check — it could save you a ton of time.
If you don’t have any luck, reach out to the bank’s customer service team through phone, email or chat. Let them know you’re shopping for a new account, and you’d like to know if it’s running any promotions. More often than not, the nice representative will send you a special link.
If this doesn’t work, turn to your trusty friend Google. Look for the best bank promotions. Because you’ll likely dig up some offers from third-party sites, you’ll want to take a few minutes to make sure the offer:
Hasn’t expired.
Is legitimate. Make sure the bank is FDIC-insured and has a positive Better Business Bureau rating. You can even read some online reviews.
Doesn’t require outrageous qualifying activities. For example, it might not be realistic for you to maintain an average daily balance of $50,000 and carry out 60 qualifying debit card purchases before the end of your first 30-day statement cycle.
You can also reach out to your family, friends and social network to crowdsource bank recommendations. Sometimes banks have impressive referral programs, so both you and your friend could benefit from you signing up.
Overall, be smart. Don’t let that promise of an account bonus blind you. Also, read the fine print so you don’t get stuck paying high monthly fees, interest rates or closing penalties.
Will Opening a Bank Account Hurt Your Credit Score?
If you’re worried that opening a new bank account or closing an old one will hurt your credit score, don’t be. Your bank accounts are not included in your credit report and therefore have no affect on your score, unless you have an outstanding negative balance that the bank turns over to a collection agency.
Sometimes when you go to open a new bank account, banks will do a soft credit check. However, that won’t affect your score.
Now, go enjoy your fresh new bank account and that nice cash bonus you’re about to pocket. Add it to your savings account, put it toward student loan payments or, heck, treat yourself!
*Chase Fine Print
Checking offer is not available to existing Chase checking customers, those with fiduciary accounts, or those whose accounts have been closed within 90 days or closed with a negative balance. To receive the $150 checking bonus: 1) Open a new Chase Total Checking account, which is subject to approval; 2) Deposit $25 or more at account opening; AND 3) Have your direct deposit made to this account within 60 days of account opening. Your direct deposit needs to be an electronic deposit of your paycheck, pension or government benefits (such as Social Security) from your employer or the government. After you have completed all the above requirements, we’ll deposit the bonus in your new account within 10 business days. You can only receive one new checking account-related bonus per calendar year. Bonus is considered interest and will be reported on IRS Form 1099-INT.
Account Closing: If your checking account is closed within six months after opening, we will deduct the bonus amount at closing.
Editorial Disclosure: This content is not provided by the bank advertiser. Opinions expressed here are author’s alone, not those of the bank advertiser. This site may be compensated through the bank advertiser Affiliate Program.
This was originally published on The Penny Hoarder, which helps millions of readers worldwide earn and save money by sharing unique job opportunities, personal stories, freebies and more. The Inc. 5000 ranked The Penny Hoarder as the fastest-growing private media company in the U.S. in 2017.
The 12 Best Bank Promotions of 2019 (We’re Talking Cash Bonuses up to $750) published first on https://justinbetreviews.tumblr.com/
0 notes
awsexchage · 7 years ago
Photo
Tumblr media
hub でハブられそうになったのでメモ 〜 まぼろしのプルリクエスト 〜 https://ift.tt/2L72BFB
追記
これは
tl;dr
何にハマったのか
何がどうだったのか — octorelease が依存しているライブラリ — デバッグしてみる — デバッグしてみる (2) 〜 何が起きているのか 〜 — デバッグしてみる (3) 〜 じゃあ, どうするのか 〜
で, どうしたのか — まぼろしのプルリクエスト — なぜ, オレオレ YAML パーサーなのか
ということで
追記
プルリクエストは静かにクローズされました. 丁寧にコメント頂いて嬉しかったです.
Hi,My environment is as follows.$ ruby --versionruby 2.5.1p57 (2018-03-29 revision 63029) $ bundle exec gem list*** LOCAL GEMS ***bundler (1.16.2)byebug (10.0.2)hub (1.1... Add Support indentation YAML by inokappa · Pull Request #1945 · github/hub - GitHub
github.com
これは
集え、初老丸達よ。初老丸達による世界に向けた技術的(又はそれに関連する)な物語を綴るカレンダーです。我こそ初老丸という方、初老丸予備軍の方も奮ってご参加下さい。ジーク・初老丸! 初老丸 Advent Calendar 2018 - Qiita - Qiita
qiita.com
初老丸 Advent Calendar 2018 第 1 日目の記事になる予定です.
tl;dr
octorelease という Gem をリリースする際に過去のプルリクエストを git log から拾ってリリースノートを自動生成するツールを利用しようとしたら, それに依存する hub でハマってしまったのでメモしておきます.
Contribute to mizzy/octorelease development by creating an account on GitHub. mizzy/octorelease - GitHub
github.com
hub helps you win at git. Contribute to github/hub development by creating an account on GitHub. github/hub - GitHub
github.com
何にハマったのか
octorelease (厳密に言うと, hub) を利用するにあたって, 事前に Github API を利用する為に ${HOME}/.config/hub に以下のような設定を YAML で設定しておきます.
--- github.com: - user: xxxxxx oauth_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
この YAML の書き方が実は問題だったのです… (後述)
rake octorelease を実行すると以下のような例外が発生しました.
rake aborted! NoMethodError: undefined method `[]=' for nil:NilClass /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:511:in `block in yaml_load' /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:502:in `each' /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:502:in `yaml_load' /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:483:in `load' /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:456:in `initialize' /path/to/vendor/bundle/ruby/2.5.0/gems/octorelease-0.0.6/lib/octorelease.rb:9:in `new' /path/to/vendor/bundle/ruby/2.5.0/gems/octorelease-0.0.6/lib/octorelease.rb:9:in `block in <top (required)>' ... Tasks: TOP => octorelease
例外メッセージを見る限りだと, octorelease が依存している hub というライブラリで問題が発生しているようです.
何がどうだったのか
octorelease が依存しているライブラリ
hub というコマンドラインツールで, ライブラリとしても利用が可能なようです. あまり詳しく見ていないので, 間違っていたら指摘をお願い致します.
hub helps you win at git. Contribute to github/hub development by creating an account on GitHub. github/hub - GitHub
github.com
ちなみに, 現在は Golang で書き直されているようです.
デバッグしてみる
例外のメッセージを見てみると, hub の github_api.rb というコードの 511 行目で何か起きているようです. 以下, 前後のコードの抜粋です.
... def yaml_load(string) hash = {} host = nil string.split("\n").each do |line| case line when /^---\s*$/, /^\s*(?:#|$)/ # ignore when /^(.+):\s*$/ host = hash[$1] = [] when /^([- ]) (.+?): (.+)/ key, value = $2, $3 host << {} if $1 == '-' host.last[key] = value.gsub(/^'|'$/, '') else raise "unsupported YAML line: #{line}" end end hash end ..
メソッド名を見ると, YAML ファイル (${HOME}/,config/hub) を読み込んで解析するようなメソッドのようですので, irb を起動してこのメソッドをデバ��グしてみたいと思います. 用意する YAML ファイルは, 以下のような内容となります.
github.com: - user: foobar oauth_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
試しに Ruby 標準の YAML ライブラリを利用して解析してみます. 尚, 検証に利用する Ruby の環境は以下の通りです.
$ ruby --version ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17
以下のように, Ruby 標準 YAML ライブラリの load_file メソッドを利用してファイルから YAML を読み込みます.
irb(main):001:0> require 'yaml' => true irb(main):003:0> YAML.load_file('sample.yml') => {"github.com"=>[{"user"=>"foobar", "oauth_token"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}]}
ちゃんと解析されて Ruby のハッシュオブジェクトとして読み込まれました. 次に hub で YAML を読み込んでみます. octrelease のソースコードを見る限りだと, hub の Hub::GitHubAPI::FileStore というクラスをインスタンス化する際に YAML ファイルを引数として渡してあげると良さそうです.
irb(main):004:0> require 'hub' => true irb(main):006:0> Hub::GitHubAPI::FileStore.new 'sample.yml' Traceback (most recent call last): ... 5: from /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:456:in `initialize' 4: from /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:483:in `load' 3: from /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:502:in `yaml_load' 2: from /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:502:in `each' 1: from /path/to/vendor/bundle/ruby/2.5.0/gems/hub-1.12.4/lib/hub/github_api.rb:511:in `block in yaml_load' NoMethodError (undefined method `[]=' for nil:NilClass)
冒頭の例外と同じ内容の例外が発生しました. この例外を回避する為, 試行錯誤した結果, 以下のような YAML ファイルの中身にすることで例外を回避することを確認しました. (github.com: 以下に半角スペースのインデントが無い状態です.)
github.com: - user: xxxxxx oauth_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
この YAML を一行にすると以下のようになります.
---\ngithub.com:\n- user: foobar\n oauth_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n
これを, 標準の YAML ライブラリで読み込んでみます.
irb(main):001:0> require 'yaml' => true irb(main):002:0> YAML.load("---\ngithub.com:\n- user: foobar\n oauth_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n") => {"github.com"=>[{"user"=>"foobar", "oauth_key"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}]}
一応, YAML として読み込むことが出来るようですが, こちら をざっくりと読んでみたところ, YAML 自体は半角スペースによるインデントを使って構造化しているので, 半角スペースでインデントは必須なんではなかろうかと考えていますが, github.com: 以下に半角スペースのインデントが無い状態でも問題は無いようです.
デバッグしてみる (2) 〜 何が起きているのか 〜
インデントが無い YAML でも問題は無かったのですが, 少々納得がいかなかったので, 引き続きデバッグを進めてみたいと思います.
hub の github_api.rb, 511 行目前後にフォーカスしてみます.
... when /^([- ]) (.+?): (.+)/ key, value = $2, $3 host << {} if $1 == '-' host.last[key] = value.gsub(/^'|'$/, '') ...
文字列として読み込まれた YAML を 1 行毎に正規表現を使ってキャプチャして特殊変数の $1 〜 $3 に放り込んでいるようです. そして, $1 が - であれば, host という変数に空の{} (ハッシュ) を追加して, $2 をハッシュのキー (変数 key) として, $3 を key に対する値 (変数 value) としてハッシュを生成していくことを意図しているようです.
では, このコードを含む yaml_load メソッドだけを切り出して, 以下のような小さなコードでデバッグしてみたいと思います. デバッグには byebug という Gem で配布しているデバッガを利用します.
require 'minitest/autorun' class HubYamlLoadTest < Minitest::Test def test_yaml_load_my_pattern yaml = "---\ngithub.com:\n - user: foobar\n oauth_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" expect = {"github.com"=>[{"user"=>"foobar", "oauth_key"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}]} assert_equal yaml_load(yaml), expect end end def yaml_load(string) hash = {} host = nil string.split("\n").each do |line| case line when /^---\s*$/, /^\s*(?:#|$)/ # ignore when /^(.+):\s*$/ host = hash[$1] = [] when /(^[- ]) (.+?): (.+)/ key, value = $2, $3 host << {} if $1 == '-' require 'byebug'; byebug # ここにデバッガを差し込む host.last[key] = value.gsub(/^'|'$/, '') else raise "unsupported YAML line: #{line}" end end hash end
byebug の詳しい使い方については, 他の書籍やサイトをご覧下さい.
このテストコードを実行してみます.
$ bundle exec ruby test.rb Run options: --seed 54106 # Running: [25, 34] in /Users/kawahara/sandboxies/octorelease/test.rb 25: host = hash[$1] = [] 26: when /(^[- ]) (.+?): (.+)/ 27: key, value = $2, $3 28: host << {} if $1 == '-' 29: require 'byebug'; byebug => 30: host.last[key] = value.gsub(/^'|'$/, '') 31: else 32: raise "unsupported YAML line: #{line}" 33: end 34: end (byebug)
byebug のプロンプトが現れ, デバッガを差し込んだ次��行で処理が一時停止しています. この状態で, 各変数にどのような値が格納されているのか確認しています.
... (byebug) key "- user" (byebug) value "foobar" (byebug) host []
変数 host が [] と空の配列になっており, 変数 host はハッシュである前提で host.last[key] が実行されるので, キーに変数 key が代入することが出来ずに例外が発生してしまっているようです.
デバッグしてみる (3) 〜 じゃあ, どうするのか 〜
以下のような変更を加えてみます.
$ diff -u test.rb fix.rb --- test.rb 2018-11-22 07:09:51.000000000 +0900 +++ fix.rb 2018-11-22 07:09:42.000000000 +0900 @@ -25,7 +25,8 @@ host = hash[$1] = [] when /(^[- ]) (.+?): (.+)/ key, value = $2, $3 - host << {} if $1 == '-' + host << {} if $1 == '-' or $2 =~ /^\s*-\s*/ + key.gsub!(/^\s*-\s*|^\s*/, '') require 'byebug'; byebug host.last[key] = value.gsub(/^'|'$/, '') else
この状態で, 変更したコード (fix.rb) を実行してみます.
$ bundle exec ruby fix.rb Run options: --seed 49205 # Running: [26, 35] in /Users/kawahara/sandboxies/octorelease/fix.rb 26: when /(^[- ]) (.+?): (.+)/ 27: key, value = $2, $3 28: host << {} if $1 == '-' or $2 =~ /^\s*-\s*/ 29: key.gsub!(/^\s*-\s*|^\s*/, '') 30: require 'byebug'; byebug => 31: host.last[key] = value.gsub(/^'|'$/, '') 32: else 33: raise "unsupported YAML line: #{line}" 34: end 35: end (byebug) key "user" (byebug) value "foobar" (byebug) host [{}]
変数 host に空のハッシュ {} が格納されていることを確認しました. では, デバッガを外して実行してみます.
$ bundle exec ruby fix.rb Run options: --seed 17705 # Running: . Finished in 0.001235s, 809.7167 runs/s, 809.7167 assertions/s. 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
いい感じですね. また, github.com: 以下に半角スペースのインデントが無い YAML でも正しく解析されるかも検証しておきたいので, 以下のようにテストを書きました.
require 'minitest/autorun' class HubYamlLoadTest < Minitest::Test def test_yaml_load_ok_pattern yaml = "---\ngithub.com:\n- user: foobar\n oauth_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" expect = {"github.com"=>[{"user"=>"foobar", "oauth_key"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}]} assert_equal yaml_load(yaml), expect end def test_yaml_load_my_pattern yaml = "---\ngithub.com:\n - user: foobar\n oauth_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n" expect = {"github.com"=>[{"user"=>"foobar", "oauth_key"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}]} assert_equal yaml_load(yaml), expect end end def yaml_load(string) hash = {} host = nil string.split("\n").each do |line| case line when /^---\s*$/, /^\s*(?:#|$)/ # ignore when /^(.+):\s*$/ host = hash[$1] = [] when /(^[- ]) (.+?): (.+)/ key, value = $2, $3 host << {} if $1 == '-' or $2 =~ /^\s*-\s*/ key.gsub!(/^\s*-\s*|^\s*/, '') # require 'byebug'; byebug host.last[key] = value.gsub(/^'|'$/, '') else raise "unsupported YAML line: #{line}" end end hash end
これを実行してみます.
$ bundle exec ruby fix.rb Run options: --seed 30867 # Running: .. Finished in 0.003929s, 509.0354 runs/s, 509.0354 assertions/s. 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
いい感じです. 2 つの YAML パターンが, この yaml_load メソッドで解析出来るようになったはずです.
で, どうしたのか
まぼろしのプルリクエスト
hub のリポジトリを見ると, Ruby で実装された hub は既にサポートされていないのではと思ってしまう程, master ブランチには Golang のコードが並んでいます. ブランチを github:1.12-stable を切り替えると様子が一変して Ruby で実装された hub を拝むことが出来ます. さらに, .travis.yml を見ると, 以下のようにテスト対象にはいにしへの Ruby バージョンが並んでいます.
sudo: false language: ruby before_install: - script/bootstrap - export PATH=~/bin:"$PATH" script: script/test bundler_args: --without development --deployment --jobs=3 --retry=3 cache: bundler rvm: - 1.8.7 - 1.9.2 - 1.9.3 - 2.0.0 - 2.1.5 - 2.2.0-preview2 notifications: email: false
どうやら, Ruby 版の hub はメンテナンスされていないようです. また, #1591 を見ろということでリンクが張っていますが, このリンクを踏んでも 404 となりページが存在していません. このページが無いことすらメンテナンスされていないということは本当にメンテナンスされていないと思って間違いないようです.
ですが, 一応, 以下のようなプルリクエストを作成してみました.
Hi,My environment is as follows.$ ruby --versionruby 2.5.1p57 (2018-03-29 revision 63029) $ bundle exec gem list*** LOCAL GEMS ***bundler (1.16.2)byebug (10.0.2)hub (1.1... Add Support indentation YAML by inokappa · Pull Request #1945 · github/hub - GitHub
github.com
きっとマージされること無く, ひっそりとクローズされることでしょう.
なぜ, オレオレ YAML パーサーなのか
既にサポートされていないであろう Ruby 版 hub の .travis.yml を見ながら考えました. そもそも Ruby には YAML を読み込んだり, 書き出したりするライブラリがあるのに, なぜ hub にはオレオレ YAML パーサーが実装されているのか. 答えのようなコミットを発見しました.
Due to its sheer size, requiring YAML takes ~21 ms on Ruby 2.0.0. Tohandle hub's very simple config format, we won't need most of YAML'sfeatures, so we can afford to reimplement YAML ... Speed up load time by avoiding loading YAML · github/hub@f242140 - GitHub
github.com
2013 年の 12 月くらいまでは標準の YAML パーサーを利用していたようですが, YAML を解析する速度が思ったよりも遅かった為, オレオレ YAML パーサーに書き換えたとのことでした.
なるほどです. 実際に標準の YAML とオレオレパーサーでどのくらいの速度の違いがあるかについては別の機会に検証してみたいと思います.
ということで
octorelease から始まって, それが依存する hub のソースコードを見ながら色々と学びがありました. きっとプルリクエストはマージされずにまぼろしとなってしまうとは思いますが, これを糧に引き続き Ruby 道に精進して参る所存です.
有難うございました.
元記事はこちら
「hub でハブられそうになったのでメモ 〜 まぼろしのプルリクエスト 〜」
December 10, 2018 at 12:00PM
0 notes