Event Location:
City Convention Center
Na Strži 1702/65
Prague, Prague, Czechia
Abstract:
There is a lot of overlapping in Microsoft BI suite. For advanced analytics, like data mining, you can use SQL Server Analysis Services (SSAS), or R, or Python, or Azure ML. The question arises which tool to use. The answer is simple, through another question. Why not all of them? In data mining, you typically create multiple predictive models for the same task, and then evaluate them to select the best one. So why wouldn’t you even use different tools for different models? You will learn how to evaluate the predictive models. Then you will see how to bring all of the mining models together and compare them no matter of the source they come from. You will see how you can use SQL Server Integration Services, Excel, and other tools for this task.
Speaker(s): Dejan Sarka,
Abstract:
The development of Artificial Intelligence is increasingly present in our lives and as time goes by, its presence will grow thanks to the momentum that enterprises are currently providing. One of the most engaging AI applications are chatbots, which interact with real-time users in order to assist them to perform a task -such as booking a hotel, answering a question or looking for specific information on the Internet- while simulating that a real human is behind the scene. Data is knowledge, and the data that has been stored in your Azure SQL database can be used as an input for a bot which assists a company's customers in order to process the information for them and return expected results. This session will be focused on explaining the actors involved when building a bot capable of obtaining data from your storage, including Azure SQL Database, Microsoft Bot Framework and LUIS (Language Understanding Intelligent Services). A mobile app built with Xamarin will be used as demo.
Speaker(s): Luis Beltran,
Abstract:
In Power BI, you can also do other kinds of analyses than just business analytics. In this lecture you’ll see, how you can use Power BI together with cloud services for quick check of facts from freely available data sources, even if they aren’t published in a particularly suitable format. You will also see, how you can quickly analyze unstructured text (e.g. communication with customers). At the end we will take a look at PowerApps, using which you can not only quickly create a new business app in your web browser, but also integrate it in your Power BI reports, so that you can quickly react to results and take action from a single environment. Because Power BI is capable of doing much more than “just” business analyses.
Speaker(s): Michal Chmelár,
Abstract:
In most of the organizations, accidental DBAs are the individuals who are often responsible for the SQL Server Performance. In the real world when we face any performance problems, we do not have the luxury to open PowerPoint and study theory. What helps us during the time of crisis are handy scripts which help us fix our performance problems. In this quick paced, demonstration-oriented learning session, we will see how we can immediately help our application with performance if we just know what exactly to do. We will cover the following topics during our session a) Learn and Implement best deployment and configurations practices b) Indexing (and statistics) best practices deployments c) Understanding cardinality and compatibility levels and their impact d) Enabling SQL Server 2019 (on-premises and cloud) new features e) Secret Performance Tuning Scripts
Speaker(s): Pinal Dave,
Abstract:
Back to September 2016: Power BI is new, shiny and hot. It is the tool of the moment, so people cannot wait to get their hands on it. Fast forward 6 months, there is more traction within the business, training is given and workshops are held. The adoption of Power BI is growing. Some departments already use Power BI very extensively and incorporate it in their day-to-day processes. Due to this quick success there is uncertainty regarding the right support team for incidents and problems. Because an app workspace creates an Office 365 group with a lot of artifacts behind the scenes, the creation workflow is controlled by IT. Unfortunately this inhibits the end users. We require more governance, not to further bother the users, but it is essential to stay in control. Responsibilities need to be better aligned between IT and the business. Throughout this session we take you along on our Power BI journey, with tips, tricks, do's and don'ts during the implementation of Power BI (Premium).
Speaker(s): Nicky van Vroenhoven,
Abstract:
You developed a PowerBI or an Analysis Services Tabular model and you run it on a server with plenty of cores and memory. But your queries does not scale or your users are not happy with the performance! So what can you do? You can fine tune the settings of your AS Tabular (usually does not bring a large benefit), you can scale up (which is costly) or you can apply the techniques I am going to show you in this session. Techniques, that range from optimizing the storage of your model, to how to effectively implement DAX patterns for maximum performance. And all of that, complemented with digging into engine execution plans, DMVs, tracing activity and tabular engine internals.
Speaker(s): Ivan Donev,
Abstract:
Performance troubleshooting is a complex subject with many factors under consideration when you find poorly performing SQL statements, using proven methodologies, and evaluating performance data available in the Dynamic Management Views and Functions. In this session, we’ll go over a foundation of how and which DMVs to use to identify those problematic statements for versions of SQL Server from 2005 – 2017 and will also include improvements for the 2019 release. We’ll be demonstrating using practical examples, including code that can be taken away and used on attendees’ own SQL Servers. We’ll also discuss how to identify common causes of performance issues, and learn how to quickly review and understand the wealth of performance data available.
Speaker(s): Neil Hambly,
Abstract:
In the middle of deploying the model, team of data scientists realize that the predictions are "somewhat-off". Troubleshooting on the horizon and what to do. Session will guide you through most common mistakes data scientists and statisticians are making when preparing and engineering the data using T-SQL or any other database system. Further more, we will explore common statistical and data science mistakes when modeling data, extracting know-how from the data, finding the hidden patterns and running different test against the structural models using mainly R, Python, or Spark. What not-to-do will be replaced with what to-do explanations using sample datasets and sample codes. Some statistical knowledge or background is a plus!
Speaker(s): Tomaž Kaštrun,
Abstract:
Performance is one of the most important parts of a healthy database system, but sometimes a query performance may suffer, for a variety of reasons. In one case we may find a reason and fix it easily, while in the other case, it is much harder. SQL Server 2017 introduced a new approach for solving performance problems called Adaptive Query Processing. SQL Server 2019 evolves those mechanisms and the entire feature family now is named – Intelligent Query Processing. The Intelligent query processing in SQL Server 2019 includes the following: - Adaptive Query Processing enhancements - Table Variable Deferred Compilation - Approximate Query Processing - Scalar UDF Inlining In this session we will see how do these features work and in what cases they might be helpful.
Speaker(s): Dmitry Pilugin,
Abstract:
Description That's it, data scientists have left the house! Behind them, some scripts written in Python or R, thousands of CSV files, three sheets and two whiteboards of mathematical equations, many PowerPoint presentations and a clear instruction from the CEO: go to production ASAP! Unfortunately, no trace of a deployment procedure. Hopefully, this session, will explain how to industrialize data scientists' scripts. How to import and refactor code written in Jupyter Notebooks within VS Code, How to put in place the best practices of DevOps and apply them to Machine Learning with Azure Pipelines and some other tips and tricks for a successful go-live.
Speaker(s): Cédric Charlier,
Abstract:
The amount of data we collect, store and process is rapidly growing and goes hand in hand with growing amount of work related to managing it. Automation is a key if we want to stay in control and AIOps represents its next major level with potential to revolutionise IT operations. This session explains what AIOps is, provides common use cases and gives practical examples that help to avoid costly Sql Server disruptions and eliminate firefighting. Presented solution addresses limitations of Query Store and automates the identification and resolution of common performance issues.
Speaker(s): Janusz Rokicki,
Abstract:
Let us connect DBAs and Infrastructure Admins providing to DBAs vital information how to get best SQL Server deployment on top of VMware virtual platform. The session will cover both the design and the configuration of a SQL Server virtual machine with the special focus on: • vCPU allocation and deep dive in vNUMA • Memory allocation and configurations options • Storage configuration best practices including PMem/NFS/Snapshots • Network configuration myths and best practices It all that you want to know about virtual platform configuration but hesitated to ask! Directly from the source with the ton of hands-on from VMware Professional Services.
Speaker(s): Oleg Ulyanov,
Abstract:
We, at Joyful Craftsmen, we are all the time meeting people asking "... am I really able to deploy our data solution more often than once in a 3-6 months? Is that real? ..." The answer always is "Yes it is and yes you are!!!" Let's meet and have a light talk about how is that possible, what actually the buzzwords like CI (continuous integration), CD (continuous delivery), CDE (continuous deployment) and DevOps in our data platform world means and why it is important. Also with some real examples showing how simple that actually is ...
Speaker(s): Tomas Tucek,
Abstract:
Common requirement for Power BI reports is displaying different data in same data model for different report consumers. During this session you will learn how to prepare your data model infrastructure and make Row Level Security work. Several approaches will be covered. Session is going to be applicable also for SSAS tabular.
Speaker(s): Jiří Neoral,
Abstract:
Every developer and DBA should know way more beyound how the default transaction isolation level to make sure they know what to expect when working with them. I will present all of the levels and show you some suprising facts about them. We will go through various if deep demos that show what goes on internally in the SQL Server
Speaker(s): Damian Widera,
Abstract:
Azure offers a variety of services that can be combined to form a BI solution in the cloud. What options does Azure currently offer to create a modern BI architecture? The components currently available range from Azure SQL DB and SQL DWH to Data Factory, Stream Analytics, Logic App, Databricks, Analysis Services and Power BI to name a few. This is a very good toolbox, with which you can achieve your first successes very quickly. Step by step you will learn how to create the classic ETL in the cloud and analyze the results in Power BI.
Speaker(s): Alexander Klein,
Abstract:
Tasty Lunch
Speaker(s): Tasty Lunch,
Abstract:
This session covers connected Python scripts from Jupyter Notebook, executing Azure Machine Learning models and the Stream Analytics job pushing data to Power BI. This is a great feature, where users learn how Azure ML are used for Power BI output.
Speaker(s): Dr. Subramani Paramasivam,
Abstract:
Have you ever started a warehouse or ETL project and realized that the data wasn't as "clean" as you were told? If only you had profiled your data before you started then you wouldn't have to rework design elements, change code or redesign your database. In this session we will talk about what data profiling is, why you should do it and how you can do it with tools that are already included in the SQL Server BI stack.
Speaker(s): Angela Henry,
Abstract:
In this session I show you what kind of maps can be used in Power BI. What type of map is useful for. Practically we will try 4 kinds of maps.
Speaker(s): Karel Rejthar,
Abstract:
SQL Server 2014 introduces Extreme Transaction Processing, a brand new memory-optimized data management feature, targetting OLTP workloads. In this session you will learn about two new, and not very well known, features that you can use to share sets of data between modules - either within the database, or between client applications and databases: - Memory-optimized Table Variables; and - Memory-optimized Table-valued Parameters.
Speaker(s): Matija Lah,
Abstract:
Azure offers a comprehensive set of big-data solutions that help you gather, store, process, analyse and visualise data of any variety, volume or velocity, so you can discover new opportunities and take quick action. In this overview session, we’ll look at the various components within Azure that make up the Modern Data Warehouse, enable Real-Time Analytics, and support Advanced Analytics scenarios. You should leave with a high level understanding of the capabilities and limitations of each of the products within the Azure Analytics portfolio.
Speaker(s): Christina Leo,
Abstract:
As a DBA I am always trying to automate the tasks that I have to do. In this session, I want to show you 10 Powershell commands that will make your life easier and increase your productivity. I promise that at least one new thing you will learn it
Speaker(s): Marcos Freccia,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
LinkedIn: https://cz.linkedin.com/in/jiri-neoral-b2597945
Contact: http://www.neoral.cz
Jiri is BI Data Architect in Dixons Carphone and Microsoft MVP Data Platform. Before joining Dixons worked as Freelance Bi consultant and MCT (since 2008). Jiri has strong passion for Business Intelligence and loves to share his knowledge. Is active blogger about BI although decided to write in Czech and focus mainly on Czech and Slovak audience. He is also active speaker on conferences and community events (mainly based in Czech Republic). Jiri is Czech PUG leader and SQL PASS Member.
LinkedIn: http://uk.linkedin.com/in/dageop
Contact: http://www.yoursqlman.com/index.php/blogs
Dr.SubraMANI Paramasivam is a Microsoft MVP, PhD, Microsoft Certified Trainer and Head of Data AI at DAGEOP Ltd having 21 years of DB, BI, Analytics and AI experience. Mani has also spoken in various events like MS IGNITE, PASS Summit, MS Inspire, SQLBITS, Power Platform Summit, Global AI Bootcamp, Data BI Summit, SQLRelay, Power BI World Tour, Data Platform Summit, INSIDESQL UK, Global AI Nights, SQLServerGeeks Summit, MCT Global Summits, Data Day Events and various user group events. Mani also believes in Empowering Every Person in the planet and spreads the awareness on Global challenges via www.EmpoweringEveryPerson.com. He is also a co-owner of 1 Global AI Meetup and 3 Power BI PUG PASS local / user groups.
LinkedIn: http://uk.linkedin.com/in/neilhambly
Contact: http://dataidol.com/NeilHambly
Neil Hambly is a SQL Server consultant, founder and consultant at Datamovements, a Gold Microsoft Data Analytics Consulting company. Neil has 20+ years in a variety of SQL Server roles and is an MCT. He is a regular presenter (200+ events) at user groups, and PASS events, including PASS Summit and SQLSaturday, and many UK events (SQLBits, SQLRelay). Neil is the leader of PASS London (UK), a Professional Development VC, a Melissa Data MVP, and a SQL Cruise Technical Lead, who loves Guinness, whisky, and dancing.
LinkedIn: http://www.joyfulbi.com
Contact: http://joyfulcraftsmen.com/blog
More than 10 years in IT spent on custom solution(s) development, mainly for enterprises. Last several years spent in Business Intelligence product/project leading. Passionate in software craftsmenship.
LinkedIn: http://www.linkedin.com/tomaz.kastrun
Contact: http://www.tomaztsql.wordpress.com
Tomaž Kaštrun is BI developer and data analyst. His main focus are data mining, T-SQL development, programming and query optimization. He has been working with SQL server since version 2000. He is Microsoft Certified Professional, Microsoft MVP for data platform and Microsoft trainer.
LinkedIn: http://www.linkedin.com/pub/pilugin-dmitry-somewheresomehow/2b/210/277
Contact: http://www.queryprocessor.com/
Dmitry Pilugin, is a SQL Server DB developer from Russia, Moscow. He works with SQL Server for more than ten years. Currently he works as a database developer lead, responsible for the development of production databases in the media research company. Dmitry holds a blog about SQL Server query processing: QueryProcessor.com, where he writes about a query optimization and execution, and also likes to share his knowledge about it speaking at various community events and tech conferences. Data Platform Microsoft MVP since 2014.
LinkedIn: https://br.linkedin.com/in/marcosfreccia
Contact: http://marcosfreccia.wordpress.com
Currently working as a Microsoft SQL Server DBA at Zalando SE, Marcos has over 9 years of SQL Server experience, working from small to enterprise environments with High Availability, Disaster Recovery, Database Optimization, etc.. Holding several Microsoft certifications such as: MCITP DBA DEV, MCSE Data Plataform and his last certification on Microsoft Azure Design and Implement Cloud Data Platform Solutions. In 2013 Marcos was awarded as a Microsoft MVP by his contributions in the Brazilian SQL Server community. Marcos is a frequent speaker in the SQL Server Community and he was the organizer of the first SQL Saturday in South Brazil.
LinkedIn: https://www.linkedin.com/in/nickyvanvroenhoven/
Contact: https://www.nickyvv.com
Nicky van Vroenhoven is a BI professional focused at the Microsoft stack. He mainly works with Power BI, Power Platform and T-SQL. After working 9 years in BI-consultancy jobs in several industries and companies, he is currently working as a Lead BI Developer at the DWH team at Van Lanschot Kempen in The Netherlands. Nicky has spoken at several User Groups, SQL Saturday Events, and the Power BI World Tour and is the co-founder of the Power BI Days Netherlands. In addition he enjoys tweeting and blogging about topics like Power BI and Power Platform at https://nickyvv.com.
LinkedIn: http://be.linkedin.com/in/cedriccharlier
Contact: http://seddryck.wordpress.com
Cédric is a talented architect and Data Platform MVP active in the domain of Business Intelligence and Data warehousing. He has more than 10 years of successful experiences with SQL Server in European industrial groups and services companies. Driven by quality and reliability, he is the main developer of an open-source solution for testing BI solutions (cubes, etl, reports) named NBi (www.nbi.io). Cedric also advocates for the introduction and general usage of agile practices in BI’s world.
LinkedIn: https://www.linkedin.com/in/michal-chmel%C3%A1r-74538620/
Contact: https://www.powerpivot.sk
Michal Chmelár is top expert for Power BI, PowerPivot and the DAX language. He is author of Power-BI.sk and PowerPivot.sk blogs, which are the largest blogs about Power BI and PowerPivot in Slovakia and Czech republic. He’s also an author of a Slovak book about Power BI – “Reporting v Power BI, PowerPivot a jazyk DAX”. He got the experience not only in Czech republic and Slovakia, but also at bigger installations in the UK, Ireland, Norway and Iran. During the nights, he’s worshipping Master Yoda and secretly plans to conquest the universe.
Contact: http://christinaleo.net
Christina Leo is a Cloud Solution Architect at Microsoft specialising in the Data and AI Platform. Prior to joining Microsoft in 2016, she worked as an independent consultant focusing on T-SQL and BI development, as well as database performance tuning in the finance and investment banking sector. When she isn't sharing her 18 years of technical experience with the data community, you can find her racing around the Solent on a 40' sailboat or often in the Thames on a little Laser.
LinkedIn: https://www.linkedin.com/in/ivandonev/
I am a Data platform MVP with more than 10 years of real-life experience with SQL Server and its stack of services. Besides the support and project work, I am also a trainer, conference speaker and user group organizer (and volunteer).
LinkedIn: https://www.linkedin.com/in/jrokicki/
Contact: https://www.datasic.com/
Microsoft Data Platform Expert and certified Azure Solutions Architect with over 12 years’ experience working in the City of London in the Financial Services Industry (retail and investment banking, multi-asset class trading systems). He has passion for secure, high-performance, maintainable data-driven applications that can be deployed with confidence on-premises and in-cloud. With educational background in intelligent sensor networks and machine learning he is always in search of automation and optimisation opportunities. Has presented at SqlBits, PASS Summit, SqlDay and multiple Sql Saturday events (Tel-Aviv, Kiev, Paris, Tallinn, Bonn, Bratislava, Goteborg, Kharkiv, Bucharest, Sofia, Ljubljana) and user groups.
LinkedIn: http://www.linkedin.com/in/pinaldave
Contact: https://blog.sqlauthority.com
Pinal Dave is a SQL Server Performance Tuning Expert and an independent consultant. He has authored 12 SQL Server database books, 30 Pluralsight courses and has written over 5000 articles on the database technology on his blog at a https://blog.sqlauthority.com. Along with 16+ years of hands-on experience, he holds a Masters of Science degree and a number of database certifications.
LinkedIn: http://www.linkedin.com/in/angelahenrydba
Contact: http://SQLSwimmer.com
Angela is a Solution Architect, living in High Point, NC and loves what she does. She's worked with all versions of SQL Server worn all the hats that come with dealing with SQL Server throughout the years: developer, administrator, data architect and BI developer. She has her MSCE in Data and Analytics (f.k.a., Business Intelligence), is a Data Platform MVP, and a Microsoft Certified Trainer (MCT). She is the former chapter leader for the PASS Triad SQL User Group in Greensboro, NC. In her spare time you can probably find her in or at the pool, she's an avid US Masters Swimmer, Coach and Instructor.
LinkedIn: https://www.linkedin.com/in/darkicebeam/
Contact: https://luisbeltran.mx
I am a Microsoft MVP in AI and Developer Technologies who is currently pursuing his PhD in Engineering Informatics at Tomas Bata University in Zlín, Czech Republic.
LinkedIn: https://www.linkedin.com/in/karel-rejthar-75494252/
Contact: http://data.maleskoly.info/
MVP Data platform - Power BI. Lektor a učitel ICT.
LinkedIn: http://www.linkedin.com/in/alexander-klein-13a04b3a
Alexander Klein is a senior Business Intelligence consultant with more than 15 years of experience. He focuses on Business Intelligence and Data Warehouse projects with Microsoft technologies like SQL Server, Power BI, Azure ML or Cortana Intelligence. Since 2008, he has been a self-employed consultant in large and medium-sized projects in all sectors across Europe. He has been visiting SQL Saturdays and other Data Conference all over Europe since 2013. Speaker at national and international events since 2017.
Bio
LinkedIn: https://pl.linkedin.com/in/damian-widera-0b56284
Contact: https://codingfamily.net
SQL Server MVP amp; MCT Software engineer with 18+ years of professional experience in all aspects of software development. Damian participated in a number of projects in international environments and possesses practical knowledge of procedures and tools which are necessary for successful implementation of such projects. Now he focuses on building solutions based on Microsoft SQL Server environment (including complex database driven systems, database tuning and optimization).
Contact: http://blogs.solidq.com/dsarka/Home.aspx
Dejan Sarka, MCT and Data Platform MVP, is an independent trainer and consultant that focuses on development of database and business intelligence applications. Besides projects, he spends about half of his time on training and mentoring. He is the founder of the Slovenian SQL Server and .NET Users Group. Dejan Sarka is the main author or co-author of eighteen books about databases and SQL Server. Dejan Sarka has also developed many courses and seminars for Microsoft, Radacad, SolidQ, and Pluralsight.
LinkedIn: http://si.linkedin.com/in/matijalah/
Contact: http://milambda.blogspot.com
Matija Lah has more than a decade of experience working with Microsoft SQL Server, mostly architecting data-centric solutions in the legal domain. His contributions to the SQL Server community have led to the Microsoft Most Valuable Professional award in 2007 (Data Platform), which he held until 2017. In 2008 Matija joined SolidQ as a Mentor, located in Central and Eastern Europe. He spends most of his time on projects involving advanced information management, and natural language processing.
LinkedIn: http://www.linkedin.com/in/oulyanov-vmware
Contact: https://blogs.vmware.com/apps/
Oleg Ulyanov is a Sr. Solution Architect in VMware Technical Marketing focused on database virtualization and monitoring. He previously spend more than 6 years within VMware Professional Services (PSO) and have more than 15 years of experience in IT. He is a Subject Matter Expert in both monitoring and virtualization of business critical applications with tons of hands-on experience directly from customer sites. He holds a broad range of industry certificates including VMware VCP 4/5, VCAP5-DCD/DCA/CID/CIA, VCAP6-DCV, SNIA, Microsoft, and speaks regularly at the official events like VMworld, VMware User Group, SQL Saturdays.
The following is a list of sponsors that helped fund the event.


Ezekiel 12:9
Son of man, hath not the house of Israel, the rebellious house, said unto thee, What doest thou?


--- layout: page title: "About" description: "Hey, this is Yifan." header-img: "img/page-bg-about.jpg" ---
A Life-long Student.
An Innocent Guy.
Hey, I am Yifan Chen, a Stats PhD student at UIUC, advised by Prof. Yun Yang.
My research interest lies in the general area of computation in machine learning, currently in the application of computational statistics to neural network acceleration. I focus on the models with heavy matrix operation, including Transformers and graph neural networks (GNNs).
I obtained my B.S. degree from Department of Statistics, Fudan University in 2018, advised by Prof. Juan Shen and Prof. Chenghong Zhang.
Inducer-tuning: Connecting Prefix-tuning and Adapter-tuning Yifan Chen*, Devamanyu Hazarika*, Mahdi Namazifar, Yang Liu, Di Jin, Dilek Hakkani-Tur The 2022 Conference on Empirical Methods in Natural Language Processing (EMNLP 2022)
Sketching as a Tool for Understanding and Accelerating Self-attention for Long Sequences Yifan Chen*, Qi Zeng*, Dilek Hakkani-Tur, Di Jin, Heng Ji, Yun Yang 2022 Annual Conference of the North American Chapter of the Association for Computational Linguistics (NAACL 2022) Oral
Empowering parameter-efficient transfer learning by recognizing the kernel structure in self-attention Yifan Chen*, Devamanyu Hazarika*, Mahdi Namazifar, Yang Liu, Di Jin, Dilek Hakkani-Tur 2022 Annual Conference of the North American Chapter of the Association for Computational Linguistics (NAACL 2022) Findings
Skyformer: Remodel Self-Attention with Gaussian Kernel and Nyström Method Yifan Chen*, Qi Zeng*, Heng Ji, Yun Yang Thirty-Fifth Conference on Neural Information Processing Systems (NeurIPS) 2021
Accumulations of Projections—A Unified Framework for Random Sketches in Kernel Ridge Regression Yifan Chen, Yun Yang International Conference on Artificial Intelligence and Statistics (AISTATS) 2021
Fast Statistical Leverage Score Approximation in Kernel Ridge Regression Yifan Chen, Yun Yang International Conference on Artificial Intelligence and Statistics (AISTATS) 2021
Narrowing the Gap between Professionality and Popularity: An Empirical Investigation on Community QA Chenghong Zhang, Yifan Chen, Hongyue Lan, Yicheng Zhang, Tian Lu American Conference on Information Systems (AMCIS) Session on TREO 2017


A short intro of the scribblenaut
This blog and the post is either a year or a week too late, depending on how you’re looking at it. I was supposed to boot this up last Rootconf, when it was still 2016 and celebs were dying left, right and center. Only it’s 2017 now, another Rootconf is already past us and democracy is dying.
But where are my manners, let me introduce you to Rootconf, the annual Devops and Cloud Infrastructure conference organized by them geeks at Hasgeek.
Last year, I was a freshly minted techie and a migrant to the Bangalore tech-scene. I had got myself the gig over a reddit thread (yes, you read that right).
The scene here at Bangalore was fancy, upbeat and teeming with geeks; which only added to my euphoria. Thankfully, that reddit guy turned out to be Captn3m0 who was very much key’ed into almost all the nicer tech (and otherwise) communities in this city.
Soon, I was attending Rootconf’16 and getting to meet wonderful devs and infra-geeks from all over the world. My glass was half-empty and I had my tinted-spectacles on. Nothing could deter my enthusiasm.
Then, a year went by…
My glass is now three-quarters full, I’ve sobered up from the initial trippy-tour of the scene and more importantly, the community has absorbed me. Now, I’m somewhat key’ed in.
I’m more skeptical, with better information filters installed over the past year. And with those upgrades, comes this blog and the Rootconf Retro post.
Read on…
Rootconf 2017
This time I was attending with four of my teammates:
- @rmenn, my team-lead,
- VV, our Technical Architect,
- @sreeramb93, resident monitoring nerd,
- and @dforce our backend bear.
Also,
@akshay_bhalotia, our iOS dev was volunteering for the conference.
The running gag was that my company Razorpay was fielding a full-stack team for Rootconf. It did help we were also the Payment Partners.
After the usual meet and greet with hasgeek employees, volunteers (who were now friends) and the attendees I had met during last rootconf and other conferences, we were seated in the MLR Convention Center Auditorium, primed for the first talk.
D01T01: State of the Open Source Monitoring Landscape by @gethash
Bernd is the co-fo of Icinga, that much hyped and heated fork of Nagios. So if he’s talking about monitoring, you’re supposed to listen.
I kind of reacted prematurely when I didn’t see Prometheus in his list of monitoring tools. However that doubt was soon rested, and he did talk about it in the metrics section of talk.
Why no Prometheus on the Monitoring landscape! 🤔 #Rootconf pic.twitter.com/xcM7JzMse6
— #Fyre (@hashfyre) May 11, 2017
The talk offered a broad coverage of:
- Monitoring tools:
- Metric Gathering tools:
- Logging tools:
- Dashboard:
The one thing I found missing from the list was sentry.
P.S. mark my words, fluentd is the log forwarder of the near-future. Do EFK, not ELK.
D01T02: Deployment Strategies with Kubernetes by @adityapatwari
Given that I have been fiddling with Kubernetes, Kompose etc. as part of my current workload and working with @rmenn who is a big-time k8s-nerd, I was very hyped for this talk.
Well, I did feel a bit let down when it turned out to be a basic 101 session of k8s. Blue-greening and canary using labels and selectors. My opinionated verdict was, there was enough material in the talk for a short webinar, but not a full conference talk.
The thing with k8s is, if you know the basic jargon, you feel like you want to consume better material. But, if you are just starting out, the jargon itself is daunting enough to warrant multiple 101 sessions.
For interested people, some resources:
- Jankiram MSV’s k8s webinar series
- k8s stuff at katacoda
- shoutout to madhuakula for sharing these tutes
D01T03: A little bot for a big cause by @techgirlpooja
This. Was. A. Talk. About. Alice.
I think I should stop here before I launch into a rant about why managing git branches, commits and PRs with a bot is a terrible idea.
Now, with that out of the way, Alice is a Hubot, the messiah of ChatOps that does github PR management for you based on a configurable rule-set. Only, if you ever want to manage a repo you don’t want a bot auto-reverting your merge that you need to revert again.Post tea talk by @TechGirlPooja on branch, PR management through slackbot Alice. Don't agree on the auto closing and autorevert. @rootconf pic.twitter.com/XQKWj0Dg04
— #Fyre (@hashfyre) May 11, 2017
Additionally, the brand of humor in this talk did not agree with me. I shall stop now.
D01T04: The OTTO Monitoring talk by @mananbharara
Before I say anything about the content, this was the best delivery of the day. Manan’s precision in every point he made was beyond a practiced excellence. This was a zero fluff talk you’d get latched onto easily.
This is the most artful, precise and expertly delivered presentation I've seen in a long time. Bloody brilliant.
— #Fyre (@hashfyre) May 11, 2017
The content though was very specific to monitoring as applied to the contexts of:
- OTTO, the EU e-commerce giant
- Clojure, the language
- metrics, a clojure library
That said, the product, oscillator was a dream to watch. If you’re using clojure, try this. It’s built on d3js.
The only caveat was that, oscillator relied upon a lot of code-instrumentation to provide metrics. So, you’ll end up needing another tool to measure instrumentation-coverage for your codebase, just like you measure test-coverage. For any module a dev writes, he’ll have to write:
- The code
- The tests
- The instrumentation
I’m neither for or against this. I just don’t see it practically plausible in smaller companies, where a dev’s time is better spent on delivering features to get more customers, and not on instrumentation. The applicability of this sterategy is thus proportional to the scale of the company. If you have got a decently sized backend army that can now focus on reliability more than feature-creep, go ahead and ask them to write instrumentation.
D01: Lunch and Networking
Lunch breaks are always about networking. For me this time it was about catching up with people I have virtually met through the Devs and Hackers Slack Group.
While there have been numerous meetups within Bangalore, where I have had the privilege to meet and befreind @SathyaBhat, this time @hacktohell and @data__wizard had come down from Mumbai to rootconf. And, I spent most time hanging with them.
This was also the customary swag collection time, you know what you need to do when you’re doing this.
D01T05: Autonomous Application Delivery by @thegdot
This talk veeered away from the cloud centricism we are so used to and focussed on old-school packaging tools, such as:
- pkgsrc
- nix
- OpenPkg
Since this talk was more targeted to the non-cloud ecosystem and for people using FreeBSD, Solaris etc. I kind of drifted away after a initial attentive phase. The lunch helped.
We mostly do not do CI/CD this way anymore, so there’s that.
D01T06: What should be PID 1 in a container by R. Rajaram
Wow! There was so much #TIL
in this talk. I was glad I decided to wake up and focus on the content.

Every time a request is made to the app hosted by the container, it fork()s a new child() and after cleanup this hangs around without getting attached to the top level process and thus never gets reaped.
One workaround was to set the entrypoint to a bash
script that in turn runs your server:
CMD ["/bin/bash", "-c", "set -e && /path-to-your-app"]
as opposed to directly running:
CMD ["/path-to-your-app"]
But this was only the tip of the ice-berg. Alternatives were:
I just found a very nice blog-post on this:
Docker and the PID 1 Zombie reaping problem
Using dumb-init
has a caveat in that, it becomes non-trivial to build a layered docker image using FROM
directive on top of an image that uses dumb-init
.
I have faced this problem while dealing with the hashicorp vault docker image
This merits a fresh article, so I’m not going to talk about this more in this post. I loved this talk.
D01: Reprise
I spent some time with my friends @lochan and Sapna, the amazing travelling-india-on-bicycles-while-hoola-hooping-and-singing duo. They were conducting the fitness oriented Kilter Track. They had setup Slack lines, hoola hoops on the venue for the fitness inclined. While slack-lining or hoola-hooping weren’t my things, I spent quiet some time singing Knocking on Heaven’s Door etc with Lochan on the guitar. His rendition of Parvaaz’s songs are always amazing. Oh! Did I forget to tell you that he had recently acted in one of Parvaaz’s music videos.
D01: Off The Record Session - AWS Cost Optimization
The session was being conducted by the admins of AWS Meetup Group, Bangalore. Of whom, I knew @habi_pk / Habeeb through previous meetups.
I had Decided to join in on the OTR session from a more listener point of view, however soon the debate was too heated to not participate. We talked broadly about:
- Spot Instances
- Reserved Instances
- AutoScaling
- Cloud Architecture as Code
- CloudFormation
- Terraform
- CloudFormation vs Terraform (json vs hcl)
- You can understand that this had flame-war potential
- Optimization of instance size based on workload
- Incited a riot (almost) when I proclaimed support for t2 machines to be able to do your job
- Thankfully @SathyaBhat jumped in to save my soul and vouched for t2s
The Less we talk about opinions, the better. Including mine, since I consider myself a n00b when it comes to cost-optimizations.
D01: End
The day ended with my team heading to the post-conf party organized by Gojek at Big Brewsky. Food and drinks were on them.
Post intoxication, @_TheDarkRider dropped by to say hi which resulted in:
followed by @theeggfactory dinner with @_TheDarkRider @_dforce @hashfyre @hacktohell @data__wizard and @mehulved. Random & fun conversations
— Sathya (@SathyaBhat) May 11, 2017


Navy’s new aircraft carrier to sail into home port for first time
Shipping lanes and an air exclusion zone have been put in place for the arrival of HMS Prince of Wales at Portsmouth Naval Base.
Britain’s second and newest aircraft carrier, HMS Prince of Wales, is set to sail into its home port of Portsmouth for the first time.
The £3.1 billion warship left Rosyth dockyard in Scotland, where it was built, in September before undergoing eight weeks of sea trials.
Shipping lanes into Portsmouth Harbour will be closed and an air exclusion zone put in place for the arrival of the 65,000-tonne ship.
The carrier’s sister ship, HMS Queen Elizabeth, also based at Portsmouth Naval Base, is currently on a visit to the US to undergo trials of the F35 fighter jets ahead of its first operational deployment planned for 2021.
Major upgrade work has been carried out at the jetties at Portsmouth so that the two giant ships can berth next to each other.
During their 50-year service, the two 280-metre long aircraft carriers can be pressed into action for various work such as high intensity war fighting or providing humanitarian aid and disaster relief.
They have been built by the Aircraft Carrier Alliance (ACA) – a partnership of BAE Systems, Babcock, Thales and the Ministry of Defence.
Overall, six shipyards around the UK – Appledore, Birkenhead, Govan, Portsmouth, Rosyth and Tyne – have been involved in building various parts of the carriers.


Course Outline: Introduction to Data Mining, Knowing Data (Data objects, similarities and dissimilarities, statistical descriptions and visualizations), Data Pre-processing, Data Warehousing and Online Analytical Processing, Data Cube technology, Mining frequent patterns, Classification and Cluster Analysis, Research trends in Data mining and warehousing.


Rocamble visualizer
produces a navigable, recursive syntax tree
// Life, Universe, and Everything var answer = 6 * 7;


Doc-as-code: docfx.exe
User Manual
0. Introduction
docfx.exe
is used to generate documentation for programs. It has the ability to:
- Extract language metadata for programing languages as defined in Metadata Format Specification. Currently
C#
,VB
andF#
are supported. The language metadata will be saved withYAML
format as described in YAML 1.2. - Look for available conceptual files as provided and link it with existing programs with syntax described in Section 3. Work with Metadata in Markdown. Supported conceptual files are plain text files, html files, and markdown files.
- Generate documentation to a. Visualize language metadata, with extra content provided by linked conceptual files using syntax described in Section 3. Work with Metadata in Markdown. b. Organize and render available conceptual files. It can be easily cross-referenced with language metadata pages. We support Docfx Flavored Markdown(DFM) for writing conceptual files. DFM supports all Github Flavored Markdown(GFM) syntax with 2 exceptions when resolving list. It also adds several new features including file inclusion, cross reference, and yaml header. For detailed description about DFM, please refer to DFM.
Currently generating documentations to a client only website is supported. The generated website can be easily published to whatever platform such as Github Pages and Azure Website with no extra effort.
Generating offline documentation such as PDF is also supported now.
1. Syntax
docfx <command> [<args>]
2. Commands
2.0 Init command docfx init
docfx init
helps generate an docfx.json
file.
2.1 Help command docfx help
docfx help -a
list available subcommands.
docfx help <command>
to read about a specific subcommand
2.2 Extract language metadata command docfx metadata
Syntax
docfx metadata [<projects>] [--property <n1>=<v1>;<n2>=<v2>]
Layout
|-- <metadata folder>
|-- api
| |-- <namespace>.yml
| |-- <class>.yml
|-- toc.yml
|-- index.yml
2.2.1 Optional <projects>
argument
<projects>
specifies the projects to have metadata extracted. There are several approaches to extract language metadata.
From a supported file or file list Supported file extensions include
.csproj
,.vbproj
,.sln
,project.json
,dll
assembly file,.cs
source file and.vb
source file.Multiple files are separated by whitespace, e.g.
docfx metadata Class1.cs a.csproj
Note
Glob pattern is NOT supported in command line options.
From docfx.json file, as described in Section3.
If the argument is not specified,
docfx.exe
will try readingdocfx.json
under current directory.
The default output folder is _site/
folder if it is not specified in docfx.json
under current directory.
2.2.2 Command option --shouldSkipMarkup
If adding option --shouldSkipMarkup
in metadata command, it means that DocFX would not render triple-slash-comments in source code as markdown.
e.g. docfx metadata --shouldSkipMarkup
2.2.3 Command option --property <n1>=<v1>;<n2>=<v2>
An optional set of MSBuild properties used when interpreting project files. These are the same properties that are passed to msbuild via the /property:
Syntax If Please note that toc.yml syntax
TOC.yml Sample TOC.md Sample The default output folder is If specified, use the template from template folder Template Folder Structure Syntax Prerequisite: We leverage wkhtmltopdf to generate PDF. Download wkhtmltopdf and save the executable folder path to %PATH%. Or just install wkhtmltopdf using chocolatey: Current design is that each TOC file generates a corresponding PDF file. Walk through Walkthrough: Generate PDF Files to get start. If Top level Sample Make sure to specify Templates are used to transform YAML files generated by Theme is to provide general styles for all the generated pages. Files inside a theme will be generally COPIED to the output folder. A typical usage is, after YAML files are transformed to HTML pages, well-designed CSS style files in a Theme can then overwrite the default styles defined in template, e.g. main.css. There are two ways to use custom templates and themes. To use a custom template, one way is to specify template path with The template path could either be a zip file called DocFX has embedded templates: To custom theme, one way is to specify theme name with Please refer to How to Create Custom Templates to create custom templates. Sample After passing values through global metadata or file metadata, DocFX can use these metadata in templates to control the output html.
Reserved metadatas: There're three ways to set metadata for a file in DocFX: In above ways, the later way will always overwrite the former way if the same key of metadata is set. Here we will show you how to set global metadata and file metadata using separated metadata files. Take global metadata for example, you can set There're some metadata file examples: globalMetadata file example fileMetadata file example There're some examples about how to use separated metadata files. use use use use Note that, metadata set in command line will merge with metadata set in If same key for global metadata was set, the order to be overwritten would be(the later one will overwrite the former one): If same file pattern for file metadata was set, the order to be overwritten would be(the later one will overwrite the former one): Given multiple metadata files, the behavior would be undetermined, if same key is set in these files. Xref service url pattern will exact url by following steps: Replace environment variables. Extract post pipelines. Runtime replace variables. e.g.: It will run as following steps: The SitemapOptions is to configure the values for generating sitemap.xml file. In the following sample settings, the yml files inside Sample settings: Possible generated sitemap.xml: There are several ways to define file mapping. This form supports multiple file mappings, and also allows additional properties per mapping.
Supported properties: In general, the glob pattern contains the following rules: SAMPLESdocfx metadata --property TargetFramework=net46
generates metadata files with .NET framework 4.6. This command can be used when the project supports multiple TargetFrameworks
.2.3 Generate documentation command
docfx build
docfx build [-o:<output_path>] [-t:<template folder>]
docfx build
generates documentation for current folder.toc.yml
or toc.md
is found in current folder, it will be rendered as the top level TABLE-OF-CONTENT. As in website, it will be rendered as the top navigation bar.Note
homepage
is not supported in toc.md
.
And if href
is referencing to a folder, it must end with /
.toc.yml
is an array of items. Each item can have following properties:
Property
Description
name
Required. The title of the navigation page.
href
Required. Can be a folder or a file UNDER current folder. A folder must end with
/
. In case of a folder, TOC.md inside the folder will be rendered as second level TABLE-OF-CONTENT. As in website, it will be rendered as a sidebar.
homepage
The default content shown when no article is selected.
- name: Home
href: articles/Home.md
- name: Roslyn Wiki
href: roslyn_wiki/
- name: Roslyn API
href: api_roslyn/
homepage: homepages/roslyn_language_features.md
## [Home](articles/Home.md)
## [Roslyn Wiki](roslyn_wiki/)
## [Roslyn API](api_roslyn/)
2.3.1 Optional
<output_path>
argument_site/
folder2.3.2 Optional
<template folder>
argument|-- <template folder>
|-- index.html
|-- styles
| |-- docascode.css
| |-- docascode.js
|-- template
| |-- toc.html
| |-- navbar.html
| |-- yamlContent.html
|-- favicon.ico
|-- logo.ico
2.4 Generate PDF documentation command
docfx pdf
docfx pdf [<config_file_path>] [-o:<output_path>]
docfx pdf
generates PDF for the files defined in config file, if config file is not specified, docfx
tries to find and use docfx.json
file under current folder.Note
choco install wkhtmltopdf
cover.md
is found in a folder, it will be rendered as the cover page.3.
docfx.json
Formatdocfx.json
structure is key-value pair. key
is the name of the subcommand, current supported subcommands are metadata
and build
.3.1 Properties for
metadata
Metadata
section defines an array of source projects and their output folder. Each item has src
and dest
property. src
defines the source projects to have metadata generated, which is in File Mapping Format
. Detailed syntax is described in 4. Supported name-files
File Mapping Format below. dest
defines the output folder of the generated metadata files.
Key
Description
src
Defines the source projects to have metadata generated, which is in
File Mapping Format
.
dest
Defines the output folder of the generated metadata files.
force
If set to true, it would disable incremental build.
shouldSkipMarkup
If set to true, DocFX would not render triple-slash-comments in source code as markdown.
filter
Defines the filter configuration file, please go to How to filter out unwanted apis attributes for more details.
useCompatibilityFileName
If set to true, DocFX would keep
`
in comment id instead of replacing it with -
.
properties
Defines an optional set of MSBuild properties used when interpreting project files. These are the same properties that are passed to msbuild via the
/property:name=value
command line argument.{
"metadata": [
{
"src": [
{
"files": ["**/*.csproj"],
"exclude": [ "**/bin/**", "**/obj/**" ],
"src": "../src"
}
],
"dest": "obj/docfx/api/dotnet",
"shouldSkipMarkup": true,
"properties": {
"TargetFramework": "netstandard1.3"
}
},
{
"src": [
{
"files": ["**/*.js"],
"src": "../src"
}
],
"dest": "obj/docfx/api/js",
"useCompatibilityFileName": true,
"properties": {
"TargetFramework": "net46"
}
}
]
}
Note
"TargetFramework": <one of the frameworks>
in your docfx.json when the project is targeting for multiple platforms.3.2 Properties for
build
Key
Description
content
Contains all the files to generate documentation, including metadata
yml
files and conceptual md
files. name-files
file mapping with several ways to define it, as to be described in Section4. The files
contains all the project files to have API generated.
resource
Contains all the resource files that conceptual and metadata files dependent on, e.g. image files.
name-files
file mapping with several ways to define it, as to be described in Section4.
overwrite
Contains all the conceptual files which contains yaml header with
uid
and is intended to override the existing metadata yml
files. name-files
file mapping with several ways to define it, as to be described in Section4.
globalMetadata
Contains metadata that will be applied to every file, in key-value pair format. For example, you can define
"_appTitle": "This is the title"
in this section, and when applying template default
, it will be part of the page title as defined in the template.
fileMetadata
Contains metadata that will be applied to specific files.
name-files
file mapping with several ways to define it, as to be described in Section4.
globalMetadataFiles
Specify a list of JSON file path containing globalMetadata settings, as similar to
{"key":"value"}
. Please read Section3.2.3 for detail.
fileMetadataFiles
Specify a list of JSON file path containing fileMetadata settings, as similar to
{"key":"value"}
. Please read Section3.2.3 for detail.
template
The templates applied to each file in the documentation. It can be a string or an array. The latter ones will override the former ones if the name of the file inside the template collides. If omitted, embedded
default
template will be used.
theme
The themes applied to the documentation. Theme is used to customize the styles generated by
template
. It can be a string or an array. The latter ones will override the former ones if the name of the file inside the template collides. If omitted, no theme will be applied, the default theme inside the template will be used.
xref
Specifies the urls of xrefmap used by content files. Currently, it supports following scheme: http, https, ftp, file, embedded.
xrefService
Specifies the url patterns of xref service. Please read Section3.2.4 for detail.
exportRawModel
If set to true, data model to run template script will be extracted in
.raw.json
extension.
rawModelOutputFolder
Specify the output folder for the raw model. If not set, the raw model will be generated to the same folder as the output documentation.
exportViewModel
If set to true, data model to apply template will be extracted in
.view.json
extension.
viewModelOutputFolder
Specify the output folder for the view model. If not set, the view model will be generated to the same folder as the output documentation.
dryRun
If set to true, template will not be actually applied to the documents. This option is always used with
--exportRawModel
or --exportViewModel
, so that only raw model files or view model files are generated.
maxParallelism
Set the max parallelism, 0 (default) is same as the count of CPU cores.
markdownEngineName
Set the name of markdown engine, default is
dfm
, other available engines are gfm
and markdig
.
markdownEngineProperties
Set the parameters for markdown engine, value should be a JSON string.
noLangKeyword
Disable default lang keyword, it can be downloaded from here.
keepFileLink
If set to true, docfx does not dereference (aka. copy) file to the output folder, instead, it saves a
link_to_path
property inside manifest.json
to indicate the physical location of that file. A file link will be created by incremental build and copy resouce file.
sitemap
In format SitemapOptions Specifies the options for the sitemap.xml file.
disableGitFeatures
Disable fetching Git related information for articles. Set to
true
if fetching git related information is slow for huge Git repositories. Default value is false
.3.2.1
Template
s and Theme
sdocfx
to human-readable pages. A page can be a markdown file, a html file or even a plain text file. Each YAML file will be transformed to ONE page and be exported to the output folder preserving its relative path to src
. For example, if pages are in HTML format, a static website will be generated in the output folder.--template
(or -t
) command option, multiple templates must be separated by ,
with no spaces. The other way is to set key-value mapping in docfx.json
:{
...
{
"build" :
{
...
"template": "custom",
...
}
...
}
{
...
{
"build" :
{
...
"template": ["default", "X:/template/custom"],
...
}
...
}
Note
<template>.zip
or a folder called <template>
.Warning
default
, default(zh-cn)
, pdf.default
, statictoc
and common
.
Please avoid using these as template folder name.--theme
command option, multiple themes must be separated by ,
with no spaces. The other way is to set key-value mapping in docfx.json
as similar to defining template. Also, both .zip
file and folder are supported.{
"build": {
"content":
[
{
"files": ["**/*.yml"],
"src": "obj/docfx"
},
{
"files": ["tutorial/**/*.md", "spec/**/*.md", "spec/**/toc.yml"]
},
{
"files": ["toc.yml"]
}
],
"resource": [
{
"files": ["spec/images/**"]
}
],
"overwrite": "apispec/*.md",
"externalReference": [
],
"globalMetadata": {
"_appTitle": "DocFX website",
"_gitContribute": {
"repo": "https://github.com/org/repo",
"branch": "dev",
"apiSpecFolder": "docs-ref-overwrite"
}
},
"dest": "_site",
"template": "default"
}
}
3.2.2 Reserved Metadata
Metadata Name
Type
Description
_appTitle
string
Will be appended to each output page's head title.
_appFooter
string
The footer text. Will show DocFX's Copyright text if not specified.
_appLogoPath
string
Logo file's path from output root. Will show DocFX's logo if not specified. Remember to add file to resource.
_appFaviconPath
string
Favicon file's path from output root. Will show DocFX's favicon if not specified. Remember to add file to resource.
_enableSearch
bool
Indicate whether to show the search box on the top of page.
_enableNewTab
bool
Indicate whether to open a new tab when clicking an external link. (internal link always shows within the current tab)
_disableNavbar
bool
Indicate whether to show the navigation bar on the top of page.
_disableBreadcrumb
bool
Indicate whether to show breadcrumb on the top of page.
_disableToc
bool
Indicate whether to show table of contents on the left of page.
_disableAffix
bool
Indicate whether to show the affix bar on the right of page.
_disableContribution
bool
Indicate whether to show the
View Source
and Improve this Doc
buttons.
_gitContribute
object
Customize the
Improve this Doc
URL button for public contributors. Use repo
to specify the contribution repository URL. Use branch
to specify the contribution branch. Use apiSpecFolder
to specify the folder for new overwrite files. If not set, the git URL and branch of the current git repository will be used.
_gitUrlPattern
string
Choose the URL pattern of the generated link for
View Source
and Improve this Doc
. Supports github
and vso
currently. If not set, DocFX will try speculating the pattern from domain name of the git URL.
_noindex
bool
File(s) specified are not returned in search results
3.2.3 Separated metadata files for global metadata and file metadata
globalMetadataFiles
in docfx.json
or --globalMetadataFiles
in build command line. The usage of fileMetadataFiles
is the same as globalMetadataFiles
.
{
"_appTitle": "DocFX website",
"_enableSearch": "true"
}
{
"priority": {
"**.md": 2.5,
"spec/**.md": 3
},
"keywords": {
"obj/docfx/**": ["API", "Reference"],
"spec/**.md": ["Spec", "Conceptual"]
},
_noindex: {
"articles/**/article.md": true
}
}
globalMetadataFiles
in docfx.json
...
"globalMetadataFiles": ["global1.json", "global2.json"],
...
--globalMetadataFiles
in build command linedocfx build --globalMetadataFiles global1.json,global2.json
fileMetadataFiles
in docfx.json
...
"fileMetadataFiles": ["file1.json", "file2.json"],
...
--fileMetadataFiles
in build command linedocfx build --fileMetadataFiles file1.json,file2.json
docfx.json
.
3.2.4 Xref service url pattern
{%variableName%}
|> pipelineName parameter1 parameter2 ...
removeHost
, addQueryString
, pluggable pipeline will be add later.
{varName}
Environment variables: test = hello
Available Pipeline: removeHost
Variable: uid = testuid1
Url pattern: http://{%test%}.contoso.com/?uid={uid}|> removeHost
http://hello.contoso.com/?uid={uid}|> removeHost
.http://hello.contoso.com/?uid={uid}
, and append a post pipeline removeHost
.http://hello.contoso.com/?uid=testuid
.http://hello.contoso.com/?uid=testuid
, and get response from site.removeHost
.3.2.5 SitemapOptions
Property Name
Type
Description
baseUrl
string
Specifies the base url for the website to be published. It MUST begin with the protocol (such as http) and end with a trailing slash. For example,
https://dotnet.github.io/docfx/
. If the value is not specified, sitemap.xml will NOT be generated.
lastmod
DateTime
Specifies the date of last modification of the file. If not specified, docfx automatically set the value to the time the file is built.
changefreq
enum
Specifies the value of changefreq in sitemap.xml. Valid values are
always
, hourly
, daily
, weekly
, monthly
, yearly
, never
. If not specified, the default value is daily
priority
double
Specifies the value of priority in sitemap.xml. Valid values between
0.0
and 1.0
. If not specified, the default value is 0.5
fileOptions
SitemapOptions
Optional. This property can be used when some specific files have different sitemap settings. It is a set of key-value pairs, where key is the glob pattern for input files, and value is the sitemap options. Order matters and the latter matching option overwrites the former ones.
api
folder are with priority 0.3 while Markdown files are with priority 0.8 and with a different baseUrl."build": {
"sitemap":{
"baseUrl": "https://dotnet.github.io/docfx",
"priority": 0.1,
"changefreq": "monthly",
"fileOptions":{
"**/api/**.yml": {
"priority": 0.3,
"lastmod": "2001-01-01",
},
"**/GettingStarted.md": {
"baseUrl": "https://dotnet.github.io/docfx/conceptual",
"priority": 0.8,
"changefreq": "daily"
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://dotnet.github.io/docfx/api/System.String.html</loc>
<lastmod>2001-01-01T00:00:00.00+08:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://dotnet.github.io/docfx/conceptual/GettingStarted.html</loc>
<lastmod>2017-09-21T10:00:00.00+08:00</lastmod>
<changefreq>daily</changefreq>
<priority>0.3</priority>
</url>
<url>
<loc>https://dotnet.github.io/docfx/ReadMe.html</loc>
<lastmod>2017-09-21T10:00:00.00+08:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.1</priority>
</url>
</urlset>
3.3 Properties for
pdf
pdf
supports ALL the properties for build
, besides that, the following table lists additional properties specified for pdf
only.
Key
Description
name
Specifies the prefix of the generated PDF files, e.g. PDF generated from
testproject\toc.yml
is named as {name}.pdf
, testproject\api\toc.yml
is named as {name}_api.pdf
. If not specified, the value of name
is the folder name testproject
.
generatesAppendices
If specified, an
appendices.pdf
file is generated containing all the not-in-TOC articles.
keepRawFiles
If specified, the intermediate html files used to generate the PDF are not deleted after the PDF has been generated.
wkhtmltopdf
Contains additional options specific to wkhtmltopdf which is used internally to generate the PDF files.
coverTitle
The name of the bookmark to use for the cover page. If omitted, "Cover Page" will be used.
tocTitle
The name of the bookmark to use for the "Table of Contents". If omitted, "Table of Contents" will be used.
outline
The type of outline to use. Valid values are
NoOutline
, DefaultOutline
, WkDefaultOutline
. If not specified, the default value is DefaultOutline
. If WkDefaultOutline
is specified, --outline
is passed to wkhtmltopdf; otherwise --no-outline
is passed to wkhtmltopdf.
noStdin
Do not use
--read-args-from-stdin
for the wkhtmltopdf. Html input file names are set using the command line. It has been introduced to use in the Azure pipeline build. Can cause maximum allowed arguments length overflow if too many input parts (like Appendices, TocTitle, CoverPageTitle) were set for certain html source file.3.3.1 Properties for the
wkhtmltopdf
Key
Key
Description
filePath
The path and file name of a wkhtmltopdf.exe compatible executable.
additionalArguments
Additional arguments that should be passed to the wkhtmltopdf executable. For example, pass
--enable-local-file-access
if you are building on a local file system. This will ensure that the supporting *.js and *.css files are loaded when rendering the HTML being converted to PDF.4. Supported File Mapping Format
4.1 Array Format
Property Name
Description
files
REQUIRED. The file or file array,
glob
pattern is supported.
nameObsoleted, please use
dest
.
exclude
The files to be excluded,
glob
pattern is supported.
cwdObsoleted, please use
src
.
src
Specifies the source directory. If omitted, the directory of the config file will be used. It is possible to set this path relative or absolute. Use the relative path defintion when you want to refer to files in relative folders while want to keep folder structure. e.g. set
src
to ..
. When you prefere absolut path, maybe it is more meaningful to use System Enviroment variables.
dest
The folder name for the generated files.
version
Version name for the current file mapping. If not set, treat the current file-mapping item as in default version. Mappings with the same version name will be built together. Cross reference doesn't support cross different versions.
caseSensitive
TOBEIMPLEMENTED. Default value is
false
. If set to true
, the glob pattern is case sensitive. e.g. *.txt
will not match 1.TXT
. For OS Windows, file path is case insensitive while for Linux/Unix, file path is case sensitive. This option offers user the flexibility to determine how to search files.
supportBackslash
TOBEIMPLEMENTED. Default value is
true
. If set to true
, \
will be considered as file path separator. Otherwise, \
will be considered as normal character if escape
is set to true
and as escape character if escape
is set to false
. If escape
is set to true
, \\
should be used to represent file path separator.
escape
TOBEIMPLEMENTED. Default value is
false
. If set to true
, \
character is used as escape character, e.g. \{\}.txt
will match {}.txt
."key": [
{"files": ["file1", "file2"], "dest": "dest1"},
{"files": "file3", "dest": "dest2"},
{"files": ["file4", "file5"], "exclude": ["file5"], "src": "folder1"},
{"files": "Example.yml", "src": "v1.0", "dest":"v1.0/api", "version": "v1.0"},
{"files": "Example.yml", "src": "v2.0", "dest":"v2.0/api", "version": "v2.0"}
]
4.2 Compact Format
"key": ["file1", "file2"]
4.3 Glob Pattern
DocFX
uses Glob to support glob pattern in file path.
It offers several options to determine how to parse the Glob pattern:
caseSensitive
: Default value is false
. If set to true
, the glob pattern is case sensitive. e.g. *.txt
will not match 1.TXT
. For OS Windows, file path is case insensitive while for Linux/Unix, file path is case sensitive. This option offers user the flexibility to determine how to search files.supportBackslash
: Default value is true
. If set to true
, \
will be considered as file path separator. Otherwise, \
will be considered as normal character if escape
is set to true
and as escape character if escape
is set to false
. If escape
is set to true
, \\
should be used to represent file path separator.escape
: Default value is false
. If set to true
, \
character is used as escape character, e.g. \{\}.txt
will match {}.txt
.
*
matches any number of characters, but not /
?
matches a single character, but not /
**
matches any number of characters, including /
, as long as it's the only thing in a path part{}
allows for a comma-separated list of OR expressions5. Q & A
docfx.json
exists)?
A: YES. DO specify src
and files outside of current folder will be copied to output folder keeping the same relative path to src
.docfx.json
exists)?
A: YES.docfx.json
exists)?
A: NO.


Acquiring general understanding of large software systems and components from which they are built can be a time consuming task, but having such an understanding is an important prerequisite to adding features or fixing bugs. In this paper we propose the tool, namely TopicXP, to support developers during such software maintenance tasks by extracting and analyzing unstructured information in source code identifier names and comments using Latent Dirichlet Allocation. TopicXP enables developers to gain an overview of a software system under analysis by extracting and visualizing natural language topics, which generally correspond to concepts or features implemented in software classes. TopicXP is implemented as an open-source Eclipse plug-in, which proposes interactive visualization of topics along with structural dependencies between underlying classes implementing these topics. The paper also presents the results of a preliminary user study aimed at evaluating TopicXP.


Before Change
registry_name = "projects/{}/locations/{}/registries/{}".format(
project_id, cloud_region, registry_id)
client = get_client(service_account_json)
with io.open(public_key_file) as f:
public_key = f.read()
// Note: You can have multiple credentials associated with a device.
device_template = {
"id": device_id,
"credentials": [{
"publicKey": {
"format": "ES256_PEM",
"key": public_key
}
}]
}
devices = client.projects().locations().registries().devices()
return devices.create(parent=registry_name, body=device_template).execute()
// [END iot_create_es_device]
def create_device(
After Change
Create a new device with the given id, using ES256 for
authentication.
// [START iot_create_es_device]
client = iot_v1.DeviceManagerClient()
parent = client.registry_path(project_id, cloud_region, registry_id)
with io.open(public_key_file) as f:
public_key = f.read()
// Note: You can have multiple credentials associated with a device.
device_template = {
"id": device_id,
"credentials": [{
"public_key": {
"format": "ES256_PEM",
"key": public_key
}
}]
}
return client.create_device(parent, device_template)
// [END iot_create_es_device]
def create_device(


{% load wagtailimages_tags %} {% load resource_tags %} {% image resource.featured_image width-460 as one_image %} {% image resource.featured_image width-510 as two_image %} {% image resource.featured_image width-640 as three_image %} {% image resource.featured_image width-767 as four_image %} {% image resource.featured_image width-1019 as five_image %} {% image resource.featured_image width-1125 as six_image %} {% image resource.featured_image width-1534 as seven_image %}


QATrack+ Screenshots¶
Here you will find a selection of screenshots showing both the front end interface and the administrators interface.
Main User Interface¶
Choosing a unit to perform QA on¶
Choosing a test list to perform¶
Tables of test lists contain information about when the test list was last performed, when it is next due and the status of the tests from the last qa session
Performing a test list¶
The interface for performing test lists. The image below demonstrates simple numerical inputs as well as calculated values (e.g. temperature-pressure correction and dose)
Test procedures can be embedded using plain text, html, or links to external documents
Overview of units QA program¶
There are multiple options for keeping tabs on the current status of your QA program, including an overview page summarizing the current status of QA on all units.
Review Test List History¶
Choose a QA session from the past to review.
Review an individual QA session.
Data plotting¶
QATrack+ has a convenient interface for plotting and trending historical QA data. Both basic plots and statistical process control charts are available.
Administrators Interface¶
QATrack+ has a built in administrators backend for defining tests, references & tolerances, and managing users and groups.
Defining Tests¶
The interface for defining tests is simple to use and allows you to choose between a number of different test types.
Test values can be computed from the results of other tests using the Composite test type.
References & Tolerances¶
Setting and updating reference and tolerance values for a test on a unit is easily achieved through the admin interface.


---
layout: default
title: Inititives
---
A future objective of the Hometown Hero Project is to open a Joe DiMaggio Museum in Martinez. Theprincipal site for the museum being considered is the old Southern Pacific Railroad Depot. This historic building was first located here in 1876. The following year, the first passenger train passed through Martinez carrying Leland Stanford --- founder of Stanford University. We are currently working closely with the National Baseball Hall of Fame and other museums to best understand all the things we need to consider in renovating the old depot. It is hoped that we can draw on the experience of these existing museums to establish a first-class, small museum worthy of a national icon the likes of Joe DiMaggio. Initial plans are to share the depot site with a museum dedicated to the history of the Carquinez Straight, a narrow water passage between San Joaquin Rivers flowing to Suisun Bay and San Pablo Bay --- a northern extension of San Francisco Bay. By combining the two museums in the depot facility we can leverage artifacts and exhibits from both to draw people to the downtown Martinez area. The History of the Carquinez Strait Museum is an undertaking planned by the Martinez Historical Society. Rick Jones - written for the Martinez Gazette The Hometown Hero Project, an initiative spearheaded by Martinez Councilwoman Lara DeLaney, plans to honor local hero Joe DiMaggio. A proposed centerpiece of the project is a DiMaggio sculpture. At a recent council meeting Mario Chiodo, a world-renowned sculptor from Oakland, presented his vision of a DiMaggio statue and gave his background and experience in creating history-telling monuments. "I thought it would be a prudent thing to show you what we do. Our main focus is to do history-telling monuments," Chiodo told the council. "My style is storytelling, not just a figure standing there." Chiodo created the "Remember Them Memorial" in Oakland at the Henry J. Kaiser Memorial Park. The memorial was installed in 2011. The monument is a compilation of four massive sculptures that stand 33 feet tall and 110 feet long. Late author and civil rights leader Maya Angelou was part of the project. Chiodo was commissioned by Lucas Films to recreate many of the well-known Star Wars creatures that had been sitting in storage since the first round of films premiered in the 1970s. Steven Spielberg commissioned Chiodo to sculpt the character E.T. when the original was lost in a fire. A statue of baseball great Ralph Kiner was created by Chiodo, commissioned by the city of Alhambra. Chiodo is currently working on a women’s monument for Concord-Carondelet High among other projects. "We bring in interns to help with the projects," Chiodo said. We also do something very few sculptors do. We feature a visually impaired wall, which allows the blind to understand what the project looks like." Many of Chiodo’s sculptures are large, with pieces spanning up to 100 feet long and 40 feet high. The memorial in Oakland is the largest bronze sculpture in the western United States. "I have my style, but we will do whatever the client wants," he told the councilmembers. Chiodo showed the council a few early, rough drawings of his vision of what a DiMaggio sculpture may look like. "Joe DiMaggio is an epic figure. He is not just a baseball hero but he was a hero to American society during his playing years," Chiodo said. "To do justice, you have to tell the story and it’s a place that people are going to have to go to and seek out. "He is arguably a world figure. It is my feeling it will serve him justice to tell the whole story – that he came from this immigrant family of very little means and look at what he ended up doing." The Hometown Hero Project, which launched in November with a fundraiser, hopes to include an oral history project to capture the local memories of DiMaggio, a walking tour highlighting certain DiMaggio landmarks in Martinez, the creation of a DiMaggio statue, and murals welcoming Amtrak passengers to the home of Joe DiMaggio, DeLaney said. Recently, organizers of the project had a conference call with three vice presidents of the Baseball Hall of Fame, who offered to assist with various resources for the museum and oral history project. For more information on sculptor Mario Chiodo, please visit www.chiodoart.com and www.freedommarchofart.com. An element of the Hometown Hero Project (HHP) is to create a mural welcoming travelers to Martinez the birthplace of Joe DiMaggio. A well-known community business, Waters Moving and Storage, has graciously offered their storage facility for the mural. A family owned and operated moving company, Waters has been a fixture in Martinez for over 37 years. Their warehouse is strategically located between the Amtrak rail lines and Interstate 680 leading into Martinez. This 150,000 cubic square foot warehouse, could accommodate a large mural display visible from both routes into the City. Next step for the HHP is to contract with a muralist.The Museum
The Statue
Waters Storage Mural
Future plans of the Hometown Hero Project include organizing a walking tour of sites with a Joe DiMaggio connection. The tour might begin at the site of the DiMaggio residence near downtown Martinez. There is a mural of Joe downtown as well as the DiMaggio Baseball Complex in the 150 acre Waterfront Park separated from downtown by the rail tracks. The park also home to several other recreational areas including bocce ball courts, a skateboard park, and 1200 seat amphitheater. Nearby is the John Muir Historical site. Muir made his home in Martinez.
Joe frequented the City later in life and was caught dining with Marilyn Monroe at Amatto’s on Ferry Street. The boat given him by the New York Yankees sat for years in the Martinez Marina. The boat is currently in the final stages of restoration by local volunteers and is the centerpiece of the planned Joe DiMaggio Museum where the tour might culminate. The historic Martinez downtown area provides tour participants several dining options and is home to several interesting antique shops.


Rakudo Perl 6
Jonathan "Duke" Leto got Rakudo Perl 6 working thanks in part to to efforts by Moritz (moritz++) Lenz, of http://perlgeek.de/ fame, who helped make input arguments work correctly.
Here is an example stored procedure written in PL/Perl 6, from our test suite:
CREATE OR REPLACE FUNCTION test_fibonacci_plperl6(integer) RETURNS int LANGUAGE plperl6 AS $$ { [+] (1, 1, *+* ... $^limit) } $$;
The first line is SQL, and everything between the $$ symbols is Perl 6! This stored procedure takes a single integer N and returns the sum of the first N Fibonacci numbers.
The syntax $^limit is called a "placeholder variable."
You can also specifically name your input arguments like this:CREATE OR REPLACE FUNCTION test_input_3_args(integer, integer, integer) RETURNS int LANGUAGE plperl6 AS $$ ($a, $b, $c) { $a - $b + $c } $$;This stored procedure is very simple, but shows how you can directly tell PL/Perl6 the "signature" of your procedure. The signature is the ($a,$b,$c), which tells Rakudo Perl 6 that there are three named arguments. The function body (the parts between the { and the } ) simply takes the difference of the first two arguments and adds the third.


dec 5, 2014
I did some research to find the easiest examples to illustrate the difference for someone new to the tech world. When begging to code you will come across the term object oriented design and functional programming. This is my attempt to explain both of these as simple as possible
Functional Programming:
Wikipedia: In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.
In other words, you have tasks to be perform and you write functions to do them. What do you mean by functions? Think about it as input-output. I give the function something it returns something. No wonder why many math programs are functional programming.
Here is a great example I found on the web.
Source:http://answers.google.com/answers/threadview?id=207071
For example you might have a function that takes the coords. of a square computes the area, and you may have another function that computes the area of a triangle. By executing the square function 6 times you could compute the area of a cube. Or by executing a combination of the square and triangle functions you could compute the area of a rhomboid. As you can see you can build quite complex systems based on simple functions.
Object Oriented Programming OOP
Wikipedia: is a programming paradigm based on the concept of "objects", which are data structures that contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods.
The easiest way to think of object design is with a simple example. In OOP everything is an object that you can give behaviors and task. Imagine you want to write a program for a restaurant where the main goal is to keep an inventory and information of the plates.
With out going to technical on (methods, classes, etc) In OOP you would probably write a program and create an object that models a plate. To this object you can write all the behavior and attributes you need, color, size, behavior, shape, etc, anything you want. Once you model your plate you can create more plates (called instances) with other attributes say, plate blue and plate red. Ask them(via methods, this is called sending a message to the object) if they are clean, broken, used, stored anything you can think off.
While there is discussion as to what is better or if using a mix both(Java 8, Scala, F#) is the best, if you are new to programming and don't know what type of language to learn, ask yourself this question, what do I want to do with my programming skills in one year or two? Do you want to build a web app, a mobile app, a banking system? Do some research as to what type of programming langue is trending and hot for your goal(be aware these can change very quickly) and go from there. Ruby for example, is an easy friendly object oriented programming language that can build good foundations to programming and build some great web apps.
Stay tuned for more,
Andy-dev —OVER AND OUT


JavaScript needs to be enabled to take full advantage of this download section. Currently it does not seem to be enabled. Please click on this text to use the alternative webpage to select the favorite platform and language.
Get all platforms, languages, language packs | Source Code tarballs and SDK | Signatures and Hashes | Release Notes | Legacy Version
Extend your Apache OpenOffice functionality with a large and growing library of extensions with other users.
Extend your Apache OpenOffice creativity with a large and growing library of templates with other users.
Developer Snapshots represent the most recent status of the development and will be released mostly irregular. Please help us to improve the product quality. Download and test the latest versions. These builds are not fully tested and are under continuous development. It is not recommended to use in production.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.AppConfig @import models.request.AuthenticatedRequest @import models.viewmodels.C592ViewModel @this() @(c592ViewModel: C592ViewModel)(implicit request: AuthenticatedRequest[_], messages: Messages, appConfig: AppConfig)


Prepopulated password field for you to try out.
Type anything in and toggle it's view. Oh, and if you need multiple password fields to toggle on the same page, that works too.


To facilitate the analyses of OSS data, we organize our data with multiple extracts and multiple levels. The extracts are retrieved through different channels, e.g., front-ends (web user interface (UI)) and back-ends (official database dump) of the development supporting tools, e.g., issue tracker at three different times. The variations (dynamics) among extracts provide space for researchers to reproduce and validate their studies, while revealing potential opportunities for studies that otherwise could not be conducted. We provide different data levels for each extract ranging from raw data to standardized data as well as to the calculated data level for targeting specific research questions. Data retrieving and processing scripts related to each data level are offered too. By employing the multi-level structure, analysts can more efficiently start an inquiry from the standardized level and easily trace the data chain when necessary (e.g., to verify if a phenomenon reflected by the data is an actual event). We have built several datasets with this method and applied the datasets to several published studies.
Paper:
Jiaxin Zhu, Minghui Zhou, and Hong Mei. Multi-extract and multi-level dataset of mozilla issue tracking history. In Proceedings of the 13th International Conference on Mining Software Repositories (MSR '16). ACM, New York, NY, USA, 472-475.


Sweet Goals - Removed From Support
Hi There! Dream Chaser from Sweetgoals.com.
[currentGoalUsername] ([currentUserEmailAddress])removed you from supporting [goalTitle]. Blah whatever!
They also sent you a message. It reads:
[supportMessage]
Unsubscribe


Life on Mars
by Tasha
Our first major earth-works projects began this week. “Mars-works” seems a more apt description, given the epic amounts of red clay Bob, an excavating rock star, uncovered from the depths of our rolling country hillside. Between a four-foot-deep trench cut into the hill behind our house to bury the electrical cables, to the giant cargo-container-sized cavern cut into the center of the hill to hold the solar panels and batteries, to the now leveled 26’ X 13’ plot for our permanent greenhouse. Oh, and with a brand new sloped-entry hilltop pond to gravity-water our vegetable gardens, our property has been transformed into something unrecognizable from just a few days ago.
 It would have taken Matt and me months to get to this point with our shovels and our high ideals. Despite the fact that we are installing solar panels to minimize our dependence on fossil fuels here at the Reluxe Ranch, after seeing what Bob did with an excavator in a day, I am a newly converted advocate for the conscientious use of heavy equipment in creating our sustainable sanctuary (emphasis on conscientious).
I spent a couple hours playing with the excavator, digging out the pond. Sitting in the cozy, safe cockpit using the convenient bank of controls to make this giant piece of equipment behave like an extension of my body felt a lot like playing video games - except that it gave me the capability to do both good and evil to our land. In this particular scenario, I had limited destructive abilities working in a marked-out zone. I also had someone to clean up after me if needed. Still, having all that power at my fingertips made me deeply aware of the importance of having a clear understanding of your purpose before you start, if you choose to use big equipment.
When I turned off the ignition and called it a day, I stood over the gaping hole that will be our second pond and realized that for all that fast-tracking, it would still take years for nature to make a hole in the ground into the pond in our imaginations. It will probably take months water to fill the hole and make it a pond. Then plants need to grow and aquatic creatures need to move in, and a whole symbiotic self-sustaining system will hopefully take root. It was good to be reminded that Nature has its own time frame. We can speed things up here and there, but if we want to see the real benefits of our work, we need to be in this for the long-term.
Subscribe via RSS


Hello there, awesome person
Header 1
This is a link to YouTube!
This is a link to Google!
This is a link to Battlefield!


How do I use the MultiViews approach on an Apache Web server to automatically serve resources in the language requested by an HTTP request?
When a user agent requests a document from a server, information about the user's language preferences is typically passed to the server via the HTTP Accept-Language header. If the server stores versions of a page in more than one language, this HTTP information can be used to retrieve the page in the user's preferred language, if it is available. If there is only one version of a page on the server, that version will be retrieved.
The mechanism of choosing the relevant page to return to the user, based on the Accept-Language information in the HTTP request, is referred to as language negotiation.
In many cases, the initial user agent setting is okay. For example, if you have a Japanese version of a browser, the browser typically assumes that you prefer pages in Japanese, and sends this information to the server. Mainstream browsers allow you to modify these language preferences. For more information see Setting language preferences in a browser.
There are two different approaches to resource negotiation in Apache. The first involves the use of a type map file (i.e., a .var file) which names the files containing the variants explicitly; the second involves the use of a 'MultiViews' search, where the server does an implicit filename pattern match and chooses from among the results. The MultiViews option can also be set on a per directory basis, if the server administrator has allowed it.
This article addresses the question of how to set up the documents on an Apache server, using the MultiViews approach, so that language negotiation works.
Note, first, that language negotiation may or may not be the best approach for serving your multilingual content to your readers. In some cases, for example, localized sites may be best maintained by keeping the translated versions of a page in language-specific directories, or by mixing the two approaches. Which approach is appropriate, and when, will be the topic of a future article.
Setting up language negotiation involves
There is more than one way to set up language negotiation on Apache servers, and the right approach will depend on the higher level settings and the privileges enabled or disabled by the server administrator. You may need to contact your server administrator to check which approach is available and what privileges you have.
Given the number of ways in which server set up can vary, it is difficult to provide a simple definitive description of how to set up
language negotiation. What follows is a description of a typical approach. We will assume that MultiViews
is enabled (the default) and
that the user can change certain directives in .htaccess
files (small text files in the directory structure). AllowOverride
has to be properly set by the server administrator for the .htaccess file approach to work. You will need to check with your server administrator
whether this approach is workable for your own circumstances.
We will use the following example: a document called example.html is available in 3 languages, English, French and German, and the default is English. Although the example limits itself to .html files, language negotiation can be applied to other types of file.
Each language version is indicated by a special extension, which can appear before or after the .html extension. In practice, there are some considerations to bear in mind with regard to the placement of this extension.
If you put the language extension last, the .html extension can be included or excluded when requesting the file. This strategy may, however, make it more difficult to read or edit the files if they are not on an Apache server (eg. read from another server, a CD, or a hard drive). This is because most editors and browsers just look at the last extension to determine what type of file this is and how to handle it. For our example the English, French and German files would be named, respectively, as follows:
If you put the .html extension last you make it easier to to read or edit the files if they are not on an Apache server, but to access
the resource on the Apache server the name must always be typed in a browser address bar or identified in a hyperlink, etc., without the
extensions (eg. ...
). For our example, the filenames would be:
The language labels shown can actually be any strings, as long as you define their meaning on the server (see below). The server is likely to already recognize a number of 2-letter language extensions from global settings in its httpd.conf file. We recommend that you use ISO language and country codes in the way defined by BCP 47, since this provides for greater consistency and easy recognition of language labels.
You should be careful with a few extensions. For example, using the ISO code for Polish, .pl, would confuse it with the extension typically used to indicate Perl documents. You may therefore want to use pl-PL for Polish.
Note that users can refer to a specific file by typing in the full file name, eg. example.fr.html will retrieve the French version, regardless of the user's language settings.
You would normally use the AddLanguage directive to specify which extension maps to which content language specified in the incoming HTTP.
For example, the following directive maps the HTTP content language request for French to the extension .fr:
AddLanguage fr .fr
There are a number of places you can specify this. It may already be specified globally by an entry in the server's httpd.conf file,
or a server administrator may add it there. Alternatively, a user uploading content might specify it in a file in the directory hierarchy. Such a
file would typically be called .htaccess
.
It is important to specify a default file, since a user who doesn't have either English, French or German in their list of preferred languages (say for example a Spanish user), or who's user agent doesn't support content negotiation, would otherwise receive a HTTP 406 result (NOT ACCEPTABLE) rather than a file.
The best way to specify a default file will vary, depending on whether your language extension precedes or follows the .html extension, and on what version of Apache you are using. In the examples below we will assume that the default is English (likely to often be the best choice for a default, given the widespread nature of English).
On versions 2.0.30 and above of the Apache server you can specify a default file quite cleanly using the ForceLanguagePriority and LanguagePriority directives (follow the links for detailed descriptions of how these directives work).
Given our example above, we could set the default to be English using the following two lines:
LanguagePriority en fr de
ForceLanguagePriority Fallback
Now if a Spanish user were to request a Spanish document in the context of our example they would be served the English document
instead, ie. the first item in the LanguagePriority
list.
If your server version is earlier than 2.0.30 you will have to do a lot more work to specify the default file, since the ForceLanguagePriority
directive is not available. Also, the approach will depend on whether the language extension comes before or after the .html
extension.
First let's look at the case where your language extension comes before the .html extension (ie. the resource must always be typed in a browser address bar or identified in a hyperlink, etc., without the .html extension). To set the default to English you can create a copy of the English file in the directory with the following name:
example.html
If your language extension comes after the .html (ie. the .html extension can be included or excluded when requesting the file) you will need to name your copy of the English file:
example.html.html
The default file name ends in .html.html because if the default file were named example.html and the user requested the file as example.html no content negotiation would ever take place (because an exact match can be found).
If there is only one file with a given name in a directory and it has no language extension, that will be served whatever the client's language preference.
This technique can be applied to other types of file besides HTML. We just used an HTML example here because it is a common requirement.
Related links, Setting up a server


{% extends "base_generic.html" %} {% load crispy_forms_tags %} {% block pagetitle %}Findings Library{% endblock %} {% block breadcrumbs %} {% endblock %} {% block content %}
There are no findings to see here.
{% else %}Click the icon to add a finding to the current report displayed at the top of the page.
| Severity | Type | Title |
Add to Report
Clicking will add the finding to your active report displayed at the top of the screen. |
Edit Finding
Editing a finding here edits the master record for every other user. Only customize a finding after adding it to your report. |
|||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {% elif finding.severity.severity == "High" %} {{ finding.severity.severity }} | {% elif finding.severity.severity == "Medium" %} {{ finding.severity.severity }} | {% elif finding.severity.severity == "Low" %} {{ finding.severity.severity }} | {% else %} {{ finding.severity.severity }} | {% endif %} {% if finding.finding_type.finding_type == "Network" %} {{ finding.severity.severity }} | {% elif finding.finding_type.finding_type == "Wireless" %} | {% elif finding.finding_type.finding_type == "Physical" %} | {% elif finding.finding_type.finding_type == "Web" %} | {% elif finding.finding_type.finding_type == "Mobile Application" %} | {% elif finding.finding_type.finding_type == "Cloud" %} | {% elif finding.finding_type.finding_type == "Host" %} | {% else %} | {% endif %} | {{ finding.title }} |


Final Project
Scott Kizer
Races Won: 12
New Race
My Challenges
Comments
My Stats
My Friends
Settings


7
In You Do I Take Refuge
A SHIGGAION OF DAVID, WHICH HE SANG TO THE LORD CONCERNING THE WORDS OF CUSH, A BENJAMINITE.
1 O LORD my God, in you do I take refuge;
save me from all my pursuers and deliver me,
2 lest like a lion they tear my soul apart,
rending it in pieces, with none to deliver.
3 O LORD my God, if I have done this,
if there is wrong in my hands,
4 if I have repaid my friend with evil
or plundered my enemy without cause,
5 let the enemy pursue my soul and overtake it,
and let him trample my life to the ground
and lay my glory in the dust.
Selah
6 Arise, O LORD, in your anger;
lift yourself up against the fury of my enemies;
awake for me; you have appointed a judgment.
7 Let the assembly of the peoples be gathered about you;
over it return on high.
8 The LORD judges the peoples;
judge me, O LORD, according to my righteousness
and according to the integrity that is in me.
9 Oh, let the evil of the wicked come to an end,
and may you establish the righteous—
you who test the minds and hearts,
O righteous God!
10 My shield is with God,
who saves the upright in heart.
11 God is a righteous judge,
and a God who feels indignation every day.
12 If a man does not repent, God will whet his sword;
he has bent and readied his bow;
13 he has prepared for him his deadly weapons,
making his arrows fiery shafts.
14 Behold, the wicked man conceives evil
and is pregnant with mischief
and gives birth to lies.
15 He makes a pit, digging it out,
and falls into the hole that he has made.
16 His mischief returns upon his own head,
and on his own skull his violence descends.
17 I will give to the LORD the thanks due to his righteousness,
and I will sing praise to the name of the LORD, the Most High.