Stata Tutorial
Eric Hardy
January 9, 2019
This tutorial provides a overview of Stata’s basic functionality.
This is accompanied by an executable Stata file and two datasets; run
the do-file in Stata to better understand what it does
1 Overview
Use Stata for: data manipulation; data analysis; graphing; tables out to latex
1.1 Topics in this tutorial
- Basics: import data, browse dataset, create variables
- Dates: create date variables, create lead and lag variables
- Loops and “Macros”: execute commands over a set of inputs, “by”
groups
- Merge/Append: merge and append data from multiple datasets
- regression: basic syntax, lead/lag variables, storing regression output
- Tables to Latex:
- Graphing
1.2 Properties of Stata
- only one dataset in memory at a time
- (almost) everything you do will be represented as a column ”variable”
in the dataset
- variables cannot be overwritten; you must ”drop” them before
re-creating them
- numeric missing values are denoted by . which is the largest number
Stata can hold
- character missing values are denoted by ””
- if statements evaluate to 1 if true, and 0 if false
Basic Syntax:
[by varlist:] command [arguments] [if] [in] [, options]
[brackets] indicate that the syntax is optional
1.3 Finding help
- type help [command name] at the stata prompt
- alternatively, google stata [command name]
- Help file layout:
- syntax
- options
- option descriptions
- examples
- stored values
1.4 .ado files
- stata equivalent to packages
- to install, type ssc install [.ado file name] at the stata prompt
- ex: ssc install listtex
- once installed, these commands can be used like any other command
1.5 Miscellaneous
- to open GUI Stata from the command line, type xstata in the terminal
- to run a shell command from stata, type ! [command]
- to continue a command on a second line, type /// at the end of the
first line
- to run a single command or group of commands from the do-file
editor:
- highlight the commands
- Mac: command-shift-d; Windows/Linux: control-d
1.6 Editorializing
- give your saved datasets the same name as the do-file that created them
- if you are using lots of loops, you are doing something wrong
- keep variable names short and informative
- when creating new variables, indicate relationships to other variables
with names
- ex: the varible height_max could store the maximum value of height
2 Basics
Remove all datasets, matrices, etc. from memory
do not wait for user input after printing the first page of output
Import files Import .dta file (Stata file type)
. use oecd_panel.dta, clear
Additional examples
. //import .csv file
. //insheet using oecd_panel.csv, comma names clear
. //see more here: http://www.stata.com/help.cgi?insheet
.
. //import .xlsx file
. //import excel using oecd_panel.xlsx, sheet("Sheet1") firstrow clear
. //see more here: http://www.stata.com/manuals13/dimportexcel.pdf
2.1 Viewing the Dataset
Observe changes to the dataset in the browse window after running each
command
The browse command is commented out with // here for technical reasons
only.
For displaying subsets of the dataset in this tutorial, we use list instead.
Red columns are strings
Black columns are numbers (or dates!)
Blue columns are ”encoded” variables; values in blue are not the actual values
. tab country
Country Freq. Percent Cum.
____________________ ___________________________________
Argentina 11 2.42 2.42
Australia 12 2.64 5.05
Austria 12 2.64 7.69
Belgium 12 2.64 10.33
Brazil 12 2.64 12.97
Canada 12 2.64 15.60
Chile 12 2.64 18.24
Czech Republic 12 2.64 20.88
Denmark 12 2.64 23.52
Estonia 12 2.64 26.15
Finland 12 2.64 28.79
France 12 2.64 31.43
Germany 12 2.64 34.07
Greece 4 0.88 34.95
Hungary 12 2.64 37.58
Iceland 12 2.64 40.22
Indonesia 12 2.64 42.86
Ireland 11 2.42 45.27
Israel 12 2.64 47.91
Italy 12 2.64 50.55
Japan 12 2.64 53.19
Korea 12 2.64 55.82
Luxembourg 11 2.42 58.24
Mexico 12 2.64 60.88
Netherlands 12 2.64 63.52
New Zealand 11 2.42 65.93
Norway 12 2.64 68.57
Poland 12 2.64 71.21
Portugal 12 2.64 73.85
Russian Federation 11 2.42 76.26
Slovak Republic 12 2.64 78.90
Slovenia 12 2.64 81.54
South Africa 12 2.64 84.18
Spain 12 2.64 86.81
Sweden 12 2.64 89.45
Switzerland 12 2.64 92.09
Turkey 12 2.64 94.73
United Kingdom 12 2.64 97.36
United States 12 2.64 100.00
____________________ ___________________________________
Total 455 100.00
. list country year quarter gdp chg_invtr if country == "Argentina"
_________________________________________________
country year quarter gdp chg_in~r
_________________________________________________
1. Argentina 2010 2 1392033 .
2. Argentina 2010 3 1478053 .
3. Argentina 2010 4 1584674 .
4. Argentina 2011 1 1696802 .
5. Argentina 2011 2 1822131 .
_________________________________________________
6. Argentina 2011 3 1885742 .
7. Argentina 2011 4 1963413 .
8. Argentina 2012 1 2030251 .
9. Argentina 2012 2 2099170 .
10. Argentina 2012 3 2205873 .
_________________________________________________
11. Argentina 2012 4 2321690 .
_________________________________________________
if statements evaluate to 1 if true, and 0 if false
. gen argentina_dummy = (country == "Argentina")
remove all observations from Belgium from the dataset
. drop if country == "Belgium"
(12 observations deleted)
remove argentina_dummy from the dataset
2.2 Counting and Missing Values
count the number of observations in the dataset
count the number of country observations with non-missing values
. count if country != ""
443
count the number of observations for Argentina
. count if country == "Argentina"
11
be careful - stata will count missing values as greater than 1000000
. count if chg_invtr > 1000000
385
exclude the missing values
. count if chg_invtr > 1000000 & chg_invtr != .
0
2.3 Creating Variables
Create a dummy variable for each country (c1, c2, etc.)
The quietly prefix suppresses the terminal output of the command
. quietly tabulate country, gen(c)
. list country c1 c2 if inlist(country, "Argentina", "Austria")
_____________________
country c1 c2
_____________________
1. Argentina 1 0
2. Argentina 1 0
3. Argentina 1 0
4. Argentina 1 0
5. Argentina 1 0
_____________________
6. Argentina 1 0
7. Argentina 1 0
8. Argentina 1 0
9. Argentina 1 0
10. Argentina 1 0
_____________________
11. Argentina 1 0
24. Austria 0 0
25. Austria 0 0
26. Austria 0 0
27. Austria 0 0
_____________________
28. Austria 0 0
29. Austria 0 0
30. Austria 0 0
31. Austria 0 0
32. Austria 0 0
_____________________
33. Austria 0 0
34. Austria 0 0
35. Austria 0 0
_____________________
create a new variable
. gen double date = year + quarter/10
the special variable _n takes a value of 1 in the first row, 2 in the 2nd row,
etc.
the special variable _N denotes the number of observations
variables cannot be overwritten; use replace
. replace counter = counter - 1
(443 real changes made)
replace the value of a variable in a specific row(s)
. replace counter = -5 in 2
(1 real change made)
. replace counter = -6 in 4/10
(7 real changes made)
. list counter if _n <= 12
_________
counter
_________
1. 0
2. -5
3. 2
4. -6
5. -6
_________
6. -6
7. -6
8. -6
9. -6
10. -6
_________
11. 10
12. 11
_________
3 Panel Data
create a variable containing an id number for each country
id has value 1 in the first observation for every country and 0 otherwise
. by country: gen id = (_n == 1)
sum the current observation of id with the previous observation
this yields a unique id value for each country
this is an example of looping functionality without explicitly writing a
loop
. replace id = id + id[_n-1] if _n != 1
(442 real changes made)
”cross-tabulate” country names and id numbers ex: this shows 12 observations for
Australia, all with id 2
. tab country id if inlist(country, "Argentina", "Australia", "Austria")
id
Country 1 2 3 Total
____________________ __________________________________ __________
Argentina 11 0 0 11
Australia 0 12 0 12
Austria 0 0 12 12
____________________ __________________________________ __________
Total 11 12 12 35
sort the data by country (ascending), and within country sort by date
(ascending)
//sort the data by country (ascending), and within country sort by date
(descending)
by [varlist] can only be used when the data is sorted by [varlist]
find the number of observations for each country
. by country: gen country_obs = _N
. tab country_obs
country_obs Freq. Percent Cum.
_____________ ___________________________________
4 4 0.90 0.90
11 55 12.42 13.32
12 384 86.68 100.00
_____________ ___________________________________
Total 443 100.00
From this crosstab, we see that one country has four observations, 5 countries
have 11 observations each, and 32 countries have 12 observations each.
3.1 Lead and Lag Variables
Create gdp lagged one time period
This command does not account for the panel structure of the dataset
The first value of gdp_1 for Austria is the last value of gdp for Australia
. sort country date
. gen gdp_1 = gdp[_n-1]
(1 missing value generated)
browse the dataset to see the problem
. list country date gdp gdp_1 if inlist(country, "Argentina", "Austria")
__________________________________________
country date gdp gdp_1
__________________________________________
1. Argentina 2010.2 1392033 .
2. Argentina 2010.3 1478053 1392033
3. Argentina 2010.4 1584674 1478053
4. Argentina 2011.1 1696802 1584674
5. Argentina 2011.2 1822131 1696802
__________________________________________
6. Argentina 2011.3 1885742 1822131
7. Argentina 2011.4 1963413 1885742
8. Argentina 2012.1 2030251 1963413
9. Argentina 2012.2 2099170 2030251
10. Argentina 2012.3 2205873 2099170
__________________________________________
11. Argentina 2012.4 2321690 2205873
24. Austria 2010.2 283165.3 1518220
25. Austria 2010.3 289217.8 283165.3
26. Austria 2010.4 294233.2 289217.8
27. Austria 2011.1 297794.3 294233.2
__________________________________________
28. Austria 2011.2 300544.8 297794.3
29. Austria 2011.3 302313.1 300544.8
30. Austria 2011.4 304558.3 302313.1
31. Austria 2012.1 307851.2 304558.3
32. Austria 2012.2 310038.3 307851.2
__________________________________________
33. Austria 2012.3 311889.2 310038.3
34. Austria 2012.4 313206.7 311889.2
35. Austria 2013.1 314929.4 313206.7
__________________________________________
. drop gdp_1
to fix this problem, re-generate the variable by country
. by country: gen gdp_1 = gdp[_n-1]
(38 missing values generated)
browse the dataset to be sure the problem no longer exists
. list country date gdp gdp_1 if inlist(country, "Argentina", "Austria")
__________________________________________
country date gdp gdp_1
__________________________________________
1. Argentina 2010.2 1392033 .
2. Argentina 2010.3 1478053 1392033
3. Argentina 2010.4 1584674 1478053
4. Argentina 2011.1 1696802 1584674
5. Argentina 2011.2 1822131 1696802
__________________________________________
6. Argentina 2011.3 1885742 1822131
7. Argentina 2011.4 1963413 1885742
8. Argentina 2012.1 2030251 1963413
9. Argentina 2012.2 2099170 2030251
10. Argentina 2012.3 2205873 2099170
__________________________________________
11. Argentina 2012.4 2321690 2205873
24. Austria 2010.2 283165.3 .
25. Austria 2010.3 289217.8 283165.3
26. Austria 2010.4 294233.2 289217.8
27. Austria 2011.1 297794.3 294233.2
__________________________________________
28. Austria 2011.2 300544.8 297794.3
29. Austria 2011.3 302313.1 300544.8
30. Austria 2011.4 304558.3 302313.1
31. Austria 2012.1 307851.2 304558.3
32. Austria 2012.2 310038.3 307851.2
__________________________________________
33. Austria 2012.3 311889.2 310038.3
34. Austria 2012.4 313206.7 311889.2
35. Austria 2013.1 314929.4 313206.7
__________________________________________
this is still not perfect - missing values will cause problems ex: suppose Argentina
is missing its 2012 Q2 value for gdp a one-observation lag will record the value
from 2012 Q1 as the lagged value for 2012 Q3. create correct lagged values by
using dates
miscellaneous panel data examples egen commands are user generated
commands in practice they work just like the gen command list of
egen commands (including mean, min, max, sum, sd, rowtotal, etc.)
https://www.stata.com/manuals13/degen.pdf
note: there is a difference between gen var_sum = sum() and egen var_sum =
sum() create a variable that is the running sum of the id variable
. by country: gen id_gen_sum = sum(id)
create a variable that sums the id variable by country
. by country: egen id_egen_sum = sum(id)
sum all rows with names beginning in id_
. egen id_rowtotal = rowtotal(id_*)
4 Dates
the number of months since Q1, 1960
. gen time = yq(year, quarter)
MMDDYYYY dates are expressed as the number of days since 1960.
to let Stata treat observations as temporally related, use tsset
. sort id time
. tsset id time
panel variable: id (unbalanced)
time variable: time, 201 to 212
delta: 1 unit
the command tsset clear will remove the current tsset settings
with tsset, we can construct correct leads and lags create gdp correctly lagged
one time period
. gen gdp_1 = L.gdp
(38 missing values generated)
create gdp from two quarters in the future
. gen gdp_f2 = F2.gdp
(76 missing values generated)
create changes in gdp
. gen dgdp = gdp - L.gdp
(38 missing values generated)
. gen Dgdp = D.gdp
(38 missing values generated)
5 Loops and Macros
. local i = 0
. while `i´ < 5 {
2. local i = `i´ + 1
3. display `i´
4. }
1
2
3
4
5
.
. forvalues i =0(2)10 {
2. display `i´
3. }
0
2
4
6
8
10
.
. foreach num of numlist 1 8 7 6 {
2. display `num´
3. }
1
8
7
6
.
. foreach var of varlist chg_invtr exp_gds exp_gds_svc exp_svc cons_expnd ///
> gross_cap_fmtn gdp imp_gds imp_gds_svc imp_svc {
2. //displays the variable name (string)
. display "`var´"
3. //creates one and two period lags for each variable
. gen `var´_l1 = L.`var´
4. gen `var´_l2 = L2.`var´
5. }
chg_invtr
(388 missing values generated)
(393 missing values generated)
exp_gds
(399 missing values generated)
(403 missing values generated)
exp_gds_svc
(38 missing values generated)
(76 missing values generated)
exp_svc
(399 missing values generated)
(403 missing values generated)
cons_expnd
(378 missing values generated)
(384 missing values generated)
gross_cap_fmtn
(378 missing values generated)
(384 missing values generated)
gdp
(38 missing values generated)
(76 missing values generated)
imp_gds
(399 missing values generated)
(403 missing values generated)
imp_gds_svc
(38 missing values generated)
(76 missing values generated)
imp_svc
(399 missing values generated)
(403 missing values generated)
6 Merge/Append/Joinby
The current dataset is called master
The dataset to be merged in is called using
m:1 is “many to one”
each date exists for many countries in master; dates in using are unique
. merge m:1 year quarter using ten_year_treasury.dta
(note: variable quarter was byte, now float to accommodate using data´s values)
Result # of obs.
_________________________________________
not matched 229
from master 0 (_merge==1)
from using 229 (_merge==2)
matched 443 (_merge==3)
_________________________________________
each merge command creates a _merge variable:
_merge == 1: master only
_merge == 2: using only
_merge == 3: in both master and using
. keep if _merge == 3
(229 observations deleted)
7 Regression
before regressing on tsset lagged variables, the dataset must be sorted
Regression syntax: regress dependent_var indep_var_1 indep_var_2
indep_var_3
. regress gdp L.gross_cap_fmtn L.imp_gds_svc L.exp_gds_svc
Source
SS df MS Number of obs = 65
______________
__________________________________ F(3, 61) = 27101.03
Model
2.0027e+18 3 6.6756e+17 Prob > F = 0.0000
Residual
1.5026e+15 61 2.4632e+13 R-squared = 0.9993
______________
__________________________________ Adj R-squared = 0.9992
Total
2.0042e+18 64 3.1315e+16 Root MSE = 5.0e+06
________________
________________________________________________________________
gdp
Coef. Std. Err. t P>|t| [95% Conf. Interval]
________________
________________________________________________________________
gross_cap_fmtn
L1.
4.214548 .4913233 8.58 0.000 3.232086 5.19701
imp_gds_svc
L1.
-.1324612 .3399912 -0.39 0.698 -.8123155 .5473931
exp_gds_svc
L1.
1.122472 .474752 2.36 0.021 .1731464 2.071797
_cons
-493976.9 803195.7 -0.62 0.541 -2100066 1112112
________________
________________________________________________________________
automatically create dummies for each country id
. quietly areg gdp L.gross_cap_fmtn L.imp_gds_svc L.exp_gds_svc, absorb(id)
create quarter and year dummies from the quarter and year variables
. quietly xi: areg gdp L.gross_cap_fmtn L.imp_gds_svc L.exp_gds_svc i.quarter i.year, absorb(id)
this is the same as the previous regression, but storing regressors in a global
variable
. global controls = "L.imp_gds_svc L.exp_gds_svc i.quarter i.year"
. quietly areg gdp L.gross_cap_fmtn $controls , absorb(id)
Note: controls could also be defined as a local variable
look at the bottom of help regress to see stored values
retrieve coefficents and variance/covariance matrix:
. matrix b = e(b)
. matrix v = e(V)
display a matrix
. mat list b
b[1,12]
L. L. L. 1b. 2. 3.
gross_cap_~n imp_gds_svc exp_gds_svc quarter quarter quarter
y1 .98436068 -.57815634 -.2665775 0 -325852.38 706927.13
4. 2010b. 2011. 2012. 2013.
quarter year year year year _cons
y1 343274.96 0 -624434.66 358447.24 809559.59 81040767
display an element of a matrix
store outreg options related to regression table formatting rescale gdp
. global outreg_options = "nor2 coefast se nolabel bracket"
. replace gdp = gdp/1000000
(443 real changes made)
. replace gdp_1 = gdp_1/1000000
(405 real changes made)
Regression for all countries
. quietly areg gdp L.gross_cap_fmtn $controls, absorb(id)
. outreg2 using table1.xls, $outreg_options addstat("R-squared", e(r2)) replace
table1.xls
dir : seeout
Regression for Argentina
. quietly areg gdp L.gross_cap_fmtn $controls if id == 1, absorb(id)
. outreg2 using table1.xls, $outreg_options addstat("R-squared", e(r2)) append
table1.xls
dir : seeout
8 Graphing
store the first coefficient from the last regression
. global coefficient = b[1,1]
. global coefficient = round($coefficient, 0.001)
set the width and height of the saved graph notice that the width() and
height() commands come after the comma this indicates that they are optional
commands. without them, Stata would create a graph using a default width and
height
. global pngwidth = 800
. global pngheight = 600
the line beginning with graphregion makes the graph background white and
removes the border from the legend
the replace option will replace an existing graph.png file with the current
file
. twoway (line gdp time, lcolor(red) lpattern(dash)) ///
> (line gdp_1 time, lcolor(blue) lpattern(dotdash)) if country == "Argentina", ///
> title("This is a graph, and this is a Coefficient: $coefficient ") ///
> xtitle("Date") ytitle("GDP") ///
> graphregion(fcolor(white) lcolor(white) color(white)) legend(region(lcolor(white))
> )
(note: named style dotdash not found in class linepattern, default attributes used)
(note: named style dotdash not found in class linepattern, default attributes used)
.
. graph export graph.png, replace width( $pngwidth ) height( $pngheight )
(file graph.png written in PNG format)
display the graph in a pdf created in latex
to do this, create a text file in stata containing the lines needed in a latex file:
the _n at the end of each line includes a ”newline” character in the file
. file open f1 using "graph.tex", write replace
. file write f1 "\documentclass[10pt]{article}" _n
. file write f1 "\usepackage{graphicx}" _n
. file write f1 "\usepackage[margin=1in]{geometry}" _n
. file write f1 "\usepackage[labelformat=empty]{caption}" _n
. file write f1 "\newcommand{\fullscale}{.33}" _n
. file write f1 "\begin{document}" _n
. file write f1 "\clearpage" _n
. file write f1 "\begin{figure}" _n
. file write f1 "\begin{center}" _n
. file write f1 "Figure 1: What a figure!\\" _n
. file write f1 "\includegraphics[scale=\fullscale]{graph.png}" _n
. file write f1 "\end{center}" _n
. file write f1 "\caption{Notes: Write your notes here.}" _n
. file write f1 "\end{figure}" _n
. file write f1 "\end{document}" _n
. file close f1
compile the graph file in latex
. quietly ! pdflatex graph.tex
remove the auxiliary files created when compiling latex
. quietly ! rm graph.aux graph.log
9 Tables to Latex
Export stored regression results
Labels on variables in the regression will be included in the table
. label variable gdp "Gross Domestic Product"
. label variable gross_cap_fmtn "Gross Capital Formation"
. label variable imp_gds_svc "Imports of Goods and Services"
. label variable exp_gds_svc "Exports of Goods and Services"
run regressions, and store results using eststo
. quietly xi: areg gdp gross_cap_fmtn i.quarter i.year, absorb(id)
. eststo table_column_1
. quietly xi: areg gdp gross_cap_fmtn imp_gds_svc exp_gds_svc i.quarter i.year, absorb(id)
. eststo table_column_2
export the table of regressions to latex
esttab table_column_* ... includes all objects in eststo with names
beginning in table_column_
.
. local notes_1 = "Put some notes here."
. local notes_2 = "Include more notes here if you would like."
. local significance = " \\ Significance: * significant at 10\%; ** significant at 5\%; *** signif
> icant at 1\%."
.
. esttab table_column_* ///
> using gdp_table.tex, replace ///
> star(* 0.10 ** 0.05 *** 0.01) /*plain*/ nogaps ///
> nodepvars b(%9.3f) legend noabbrev style(tex) constant ///
> title("Table 1: Two Nonsensical Regressions") ///
> label stats(N r2_a, fmt(%9.0g %9.3g) labels("Observations" "Adjusted R-Squared")) se ///
> order(gross_cap_fmtn imp_gds_svc exp_gds_svc /*_cons*/) ///
> keep( gross_cap_fmtn imp_gds_svc exp_gds_svc /*_cons*/) ///
> nomtitles ///
> posthead("Dependent Variable & GDP & GDP \\" ///
> "\hline") ///
> prefoot("\hline" ///
> "Country FEs & Yes & Yes \\" ///
> "\hline" ///
> "Sample & Full & Full \\" ///
> "\hline") ///
> nonotes ///
> postfoot( "\hline\hline" ///
> "\end{tabular}}" ///
> "\captionsetup{justification=justified}" ///
> "\caption{Notes: `notes_1´ `notes_2´ `significance´ }" ///
> "\end{table}") ///
> substitute( \begin{table}[htbp]\centering \begin{table}[p]\centering\captionsetup{width=0.8\te
> xtwidth}\footnotesize{ )
(output written to gdp_table.tex)
create latex file to ”wrap” around the gdp table output
. file open f1 using "gdp_table_wrapper.tex", write replace
. file write f1 "\documentclass[10pt]{article}" _n
. file write f1 "\usepackage[margin=1in]{geometry}" _n
. file write f1 "\usepackage[labelformat=empty]{caption}" _n
. file write f1 "\begin{document}" _n
. file write f1 "\clearpage" _n
. file write f1 "\input{gdp_table.tex}" _n
. file write f1 "\end{document}" _n
. file close f1
compile the GDP table in latex
. quietly ! pdflatex gdp_table_wrapper.tex
remove the auxiliary files created when compiling latex
. quietly ! rm gdp_table_wrapper.aux gdp_table_wrapper.log
export a (nicely formatted) table from the dataset to do this, create a latex
(.tex) file within Stata by using the to export a portion of the dataset as a nicely
formatted table, we can use listtex
install listtex if you haven’t already
. ssc install listtex
checking listtex consistency and verifying not already installed...
all files already exist and are up to date.
.
. listtex country year quarter gdp if country == "Argentina" using argentina_table.tex, replace rsty
> le(tabular) ///
> head( "\documentclass[10pt]{article}" ///
> "\usepackage[margin=1in]{geometry}" ///
> "\usepackage[labelformat=empty]{caption}" ///
> "\begin{document}" ///
> "\begin{table}[htbp]\centering\captionsetup{width=0.8\textwidth}\f
> ootnotesize{" ///
> "\caption{Table 2: Argentina}" ///
> "\begin{tabular}{l l l r }" ///
> "\hline\hline" ///
> "Country & Year & Quarter & GDP \\" ///
> "\hline") ///
> foot( "\hline" ///
> "\end{tabular}}" ///
> "\caption{Notes: Write your notes here.}" ///
> "\end{table}" ///
> "\end{document}")
compile the latex file created by listtex
. quietly ! pdflatex argentina_table.tex
remove the auxiliary files created when compiling latex
. quietly ! rm argentina_table.log argentina_table.aux


PSA: Destiny 2 is down on all platforms, not just Google Stadia
by Kyle BradshawToday is the first Friday following the launch of Google Stadia, and no doubt there are people who are diving into Stadia Pro’s best (in this author’s biased opinion) free game, Destiny 2. However, Destiny 2 is not currently playable on Google Stadia, or any other platform for that matter, as server issues are currently plaguing the game with error code “stork.”
For the past few hours, any and all Google Stadia players who attempted to log in to Destiny 2 have been greeted with one of two nasty looking error messages. In fact, all players who were actively playing when the errors began were kicked out of their Destiny 2 sessions.
Could not sign in to Destiny 2 servers. Please try again later.
For more information, visit help.bungie.net and search for error code: stork
Server offline
Destiny 2 is currently unavailable. Watch help.bungie.net or @BungieHelp for updates as we work to restore service.
While it may seem easy to point to this as yet another failing of the Google Stadia launch, the error is far more widespread, affecting Destiny 2 on all platforms and even the original Destiny on Xbox and PlayStation consoles. Bungie is aware of the situation and is investigating Destiny 2’s stork errors now.
Update 5:10pm: Bungie has now identified the cause of Destiny’s server issues, and are applying the necessary fixes. By the current estimates, Stadia players should be able to play Destiny 2 starting at 7PM Pacific or 10PM Eastern tonight.
Update 11:00pm: Destiny 2 is now back online for all players, on Stadia and beyond.
Needless to say, this is a disappointing turn of events for those who were looking forward to squeezing in some time of their first weekend with Google Stadia on Destiny 2. At the very least, we all still have Samurai Shodown to play, right?
More on Google Stadia
- All Google Stadia Founders Edition invite codes have been sent, Premiere ships next week
- Alphabet Scoop 077: Stadia launch, gameplay, and Founder’s Edition
- Google Stadia first impressions: It works!
FTC: We use income earning auto affiliate links. More.


Moon Employee Portal
Tuition Reimbursement Form
View Approval Status/Upload Grading Documents
Log Out
Reimbursement Status
Form ID:
Grade:
Attach Related Files (i.e. Presentations)
Additional Information:
Approve Reimbursement Amount or Cancel Request
Approve
Cancel


Use two spaces per indentation level.
Bad: four spaces
p {
color: #f00;
}
Good: two spaces
p {
color: #f00;
}
You can configure this linter to prefer tabs if you like.
For projects that follow BEM, you may prefer to allow arbitrary indentation for rule sets that aren't nested in order to give the visual hints of hierarchy without actually nesting selectors (which has a performance cost). For example:
.component {}
.component__image {}
.component__text {}
.component-subblock {}
.component-subblock__text {}
.component-category {}
.component-other {}
You can set allow_non_nested_indentation
to true
if this convention is
preferred.
| Configuration Option | Description |
|---|---|
allow_non_nested_indentation |
Whether non-nested rule sets can be arbitrarily indented (default false) |
character |
tab or space (default space) |
width |
Number of character s per indentation level (default 2) |


Write the program based on the following HTML mark up and formatting HTML mark up using HTML text Editor a. small text b. marked c. deleted


| C1 |
Ceramic Capacitor |
voltage 6.3V; package 100 mil [THT, multilayer]; capacitance 0.1mF |
| C2 |
Ceramic Capacitor |
voltage 6.3V; package 100 mil [THT, multilayer]; capacitance 100nF |
| DHT1 |
DHT22 Humidity and Temperature Sensor |
|
| Huzzah ESP8266 |
Adafruit HUZZAH ESP8266 |
variant variant 2; part # Adafruit #2471 |
| IC1 |
ULN2803A |
package THT; variant ULN2803A |
| IC2 |
MCP23017 I2C I/O Expander |
variant PDIP |
| J1 |
Screw terminal - 6 pins |
hole size 1.0mm,0.508mm; package THT; pin spacing 0.137in (3.5mm); pins 6 |
| J2 |
Screw terminal - 2 pins |
hole size 1.0mm,0.508mm; package THT; pin spacing 0.137in (3.5mm); pins 2 |
| J3 |
Generic male header - 3 pins |
hole size 1.0mm,0.508mm; row single; package THT; pin spacing 0.1in (2.54mm); pins 3; form ♂ (male) |
| J4 |
Generic male header - 6 pins |
hole size 1.0mm,0.508mm; row single; package THT; pin spacing 0.1in (2.54mm); pins 6; form ♂ (male) |
| LED1 |
Green (570nm) LED |
package 5 mm [THT]; color Green (570nm); leg yes |
| LED2 |
Green (570nm) LED |
package 3 mm [THT]; color Green (570nm); leg yes |
| LED3 |
Green (570nm) LED |
package 3 mm [THT]; color Green (570nm); leg yes |
| LED4 |
Green (570nm) LED |
package 3 mm [THT]; color Green (570nm); leg yes |
| LED5 |
Green (570nm) LED |
package 3 mm [THT]; color Green (570nm); leg yes |
| LED6 |
Red (633nm) LED |
package 5 mm [THT]; color Red (633nm); leg yes |
| LED7 |
Red (633nm) LED |
package 5 mm [THT]; color Red (633nm); leg yes |
| LED8 |
Red (633nm) LED |
package 5 mm [THT]; color Red (633nm); leg yes |
| LED9 |
Yellow (595nm) LED |
package 5 mm [THT]; color Yellow (595nm); leg yes |
| M1 |
RioRand LM2596 |
chip label lm2596; variant variant 2 |
| Part2 |
Schematic Frame |
filename ESPStat.fzz; rev 1.0; descr ESP8266-base IoT smart thermostat for heat pumps; sheet 1/1; date<PHONE_NUMBER>; project ESPStat |
| R1 |
10kΩ Resistor |
tolerance ±5%; resistance 10kΩ; package THT; bands 4; pin spacing 400 mil |
| R2 |
150Ω Resistor |
tolerance ±5%; resistance 150Ω; package THT; bands 4; pin spacing 400 mil |
| R3 |
4.7kΩ Resistor |
tolerance ±5%; resistance 4.7kΩ; package THT; bands 4; pin spacing 400 mil |
| REL1 |
RELAY |
package relay-jzc; variant pth4 |
| REL2 |
RELAY |
package relay-jzc; variant pth4 |
| REL3 |
RELAY |
package relay-jzc; variant pth4 |
| REL4 |
RELAY |
package relay-jzc; variant pth4 |


Nodes
?
Commands executions
Rules evaluations
Configuration
Links
any value
passing
failing
Execute:
Launch execution
Show available functions
Evaluations:
Evaluate expression
Backend connections (websocket):
Recheck and re-elect servers
Checks
Collectors
Detectors
Agent information
Detectors:
Informations:


| schoolFinder.py |
288 |
3 |
0 |
99% |
| tests.py |
1252 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/aniso8601/__init__.py |
4 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/aniso8601/compat.py |
5 |
1 |
0 |
80% |
| /usr/local/lib/python3.5/site-packages/aniso8601/date.py |
96 |
84 |
0 |
12% |
| /usr/local/lib/python3.5/site-packages/aniso8601/duration.py |
85 |
76 |
0 |
11% |
| /usr/local/lib/python3.5/site-packages/aniso8601/interval.py |
57 |
49 |
0 |
14% |
| /usr/local/lib/python3.5/site-packages/aniso8601/resolution.py |
5 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/aniso8601/time.py |
84 |
70 |
0 |
17% |
| /usr/local/lib/python3.5/site-packages/aniso8601/timezone.py |
57 |
47 |
0 |
18% |
| /usr/local/lib/python3.5/site-packages/bson/__init__.py |
477 |
346 |
0 |
27% |
| /usr/local/lib/python3.5/site-packages/bson/binary.py |
58 |
28 |
0 |
52% |
| /usr/local/lib/python3.5/site-packages/bson/code.py |
30 |
19 |
0 |
37% |
| /usr/local/lib/python3.5/site-packages/bson/codec_options.py |
33 |
13 |
0 |
61% |
| /usr/local/lib/python3.5/site-packages/bson/dbref.py |
52 |
34 |
0 |
35% |
| /usr/local/lib/python3.5/site-packages/bson/errors.py |
6 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/bson/int64.py |
6 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/bson/max_key.py |
19 |
8 |
0 |
58% |
| /usr/local/lib/python3.5/site-packages/bson/min_key.py |
19 |
8 |
0 |
58% |
| /usr/local/lib/python3.5/site-packages/bson/objectid.py |
113 |
44 |
0 |
61% |
| /usr/local/lib/python3.5/site-packages/bson/py3compat.py |
48 |
24 |
0 |
50% |
| /usr/local/lib/python3.5/site-packages/bson/raw_bson.py |
33 |
16 |
0 |
52% |
| /usr/local/lib/python3.5/site-packages/bson/regex.py |
45 |
31 |
0 |
31% |
| /usr/local/lib/python3.5/site-packages/bson/son.py |
123 |
72 |
0 |
41% |
| /usr/local/lib/python3.5/site-packages/bson/timestamp.py |
55 |
35 |
0 |
36% |
| /usr/local/lib/python3.5/site-packages/bson/tz_util.py |
19 |
3 |
0 |
84% |
| /usr/local/lib/python3.5/site-packages/click/__init__.py |
13 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/click/_compat.py |
402 |
320 |
0 |
20% |
| /usr/local/lib/python3.5/site-packages/click/_unicodefun.py |
66 |
55 |
0 |
17% |
| /usr/local/lib/python3.5/site-packages/click/core.py |
814 |
574 |
0 |
29% |
| /usr/local/lib/python3.5/site-packages/click/decorators.py |
144 |
85 |
0 |
41% |
| /usr/local/lib/python3.5/site-packages/click/exceptions.py |
98 |
70 |
0 |
29% |
| /usr/local/lib/python3.5/site-packages/click/formatting.py |
134 |
112 |
0 |
16% |
| /usr/local/lib/python3.5/site-packages/click/globals.py |
18 |
12 |
0 |
33% |
| /usr/local/lib/python3.5/site-packages/click/parser.py |
236 |
203 |
0 |
14% |
| /usr/local/lib/python3.5/site-packages/click/termui.py |
176 |
149 |
0 |
15% |
| /usr/local/lib/python3.5/site-packages/click/types.py |
270 |
175 |
0 |
35% |
| /usr/local/lib/python3.5/site-packages/click/utils.py |
167 |
115 |
0 |
31% |
| /usr/local/lib/python3.5/site-packages/dateutil/__init__.py |
1 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/dateutil/relativedelta.py |
246 |
208 |
0 |
15% |
| /usr/local/lib/python3.5/site-packages/flask/__init__.py |
17 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/flask/_compat.py |
51 |
30 |
0 |
41% |
| /usr/local/lib/python3.5/site-packages/flask/app.py |
562 |
282 |
0 |
50% |
| /usr/local/lib/python3.5/site-packages/flask/blueprints.py |
157 |
118 |
0 |
25% |
| /usr/local/lib/python3.5/site-packages/flask/cli.py |
234 |
180 |
0 |
23% |
| /usr/local/lib/python3.5/site-packages/flask/config.py |
90 |
61 |
0 |
32% |
| /usr/local/lib/python3.5/site-packages/flask/ctx.py |
151 |
48 |
0 |
68% |
| /usr/local/lib/python3.5/site-packages/flask/globals.py |
26 |
6 |
0 |
77% |
| /usr/local/lib/python3.5/site-packages/flask/helpers.py |
307 |
200 |
0 |
35% |
| /usr/local/lib/python3.5/site-packages/flask/json.py |
90 |
61 |
0 |
32% |
| /usr/local/lib/python3.5/site-packages/flask/sessions.py |
149 |
88 |
0 |
41% |
| /usr/local/lib/python3.5/site-packages/flask/signals.py |
29 |
2 |
0 |
93% |
| /usr/local/lib/python3.5/site-packages/flask/templating.py |
82 |
65 |
0 |
21% |
| /usr/local/lib/python3.5/site-packages/flask/testing.py |
60 |
33 |
0 |
45% |
| /usr/local/lib/python3.5/site-packages/flask/views.py |
42 |
10 |
0 |
76% |
| /usr/local/lib/python3.5/site-packages/flask/wrappers.py |
74 |
33 |
0 |
55% |
| /usr/local/lib/python3.5/site-packages/flask_restful/__init__.py |
287 |
129 |
0 |
55% |
| /usr/local/lib/python3.5/site-packages/flask_restful/inputs.py |
112 |
60 |
0 |
46% |
| /usr/local/lib/python3.5/site-packages/flask_restful/representations/__init__.py |
0 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/flask_restful/representations/json.py |
12 |
2 |
0 |
83% |
| /usr/local/lib/python3.5/site-packages/flask_restful/reqparse.py |
173 |
46 |
0 |
73% |
| /usr/local/lib/python3.5/site-packages/flask_restful/utils/__init__.py |
21 |
6 |
0 |
71% |
| /usr/local/lib/python3.5/site-packages/itsdangerous.py |
413 |
294 |
0 |
29% |
| /usr/local/lib/python3.5/site-packages/jinja2/__init__.py |
11 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/jinja2/_compat.py |
69 |
32 |
0 |
54% |
| /usr/local/lib/python3.5/site-packages/jinja2/_stringdefs.py |
68 |
29 |
0 |
57% |
| /usr/local/lib/python3.5/site-packages/jinja2/bccache.py |
161 |
118 |
0 |
27% |
| /usr/local/lib/python3.5/site-packages/jinja2/compiler.py |
1065 |
916 |
0 |
14% |
| /usr/local/lib/python3.5/site-packages/jinja2/defaults.py |
19 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/jinja2/environment.py |
499 |
400 |
0 |
20% |
| /usr/local/lib/python3.5/site-packages/jinja2/exceptions.py |
70 |
48 |
0 |
31% |
| /usr/local/lib/python3.5/site-packages/jinja2/filters.py |
336 |
258 |
0 |
23% |
| /usr/local/lib/python3.5/site-packages/jinja2/lexer.py |
347 |
232 |
0 |
33% |
| /usr/local/lib/python3.5/site-packages/jinja2/loaders.py |
223 |
170 |
0 |
24% |
| /usr/local/lib/python3.5/site-packages/jinja2/nodes.py |
426 |
223 |
0 |
48% |
| /usr/local/lib/python3.5/site-packages/jinja2/optimizer.py |
31 |
21 |
0 |
32% |
| /usr/local/lib/python3.5/site-packages/jinja2/parser.py |
650 |
590 |
0 |
9% |
| /usr/local/lib/python3.5/site-packages/jinja2/runtime.py |
339 |
238 |
0 |
30% |
| /usr/local/lib/python3.5/site-packages/jinja2/tests.py |
51 |
25 |
0 |
51% |
| /usr/local/lib/python3.5/site-packages/jinja2/utils.py |
271 |
192 |
0 |
29% |
| /usr/local/lib/python3.5/site-packages/jinja2/visitor.py |
40 |
31 |
0 |
22% |
| /usr/local/lib/python3.5/site-packages/markupsafe/__init__.py |
155 |
88 |
0 |
43% |
| /usr/local/lib/python3.5/site-packages/markupsafe/_compat.py |
14 |
5 |
0 |
64% |
| /usr/local/lib/python3.5/site-packages/pymongo/__init__.py |
31 |
6 |
0 |
81% |
| /usr/local/lib/python3.5/site-packages/pymongo/auth.py |
221 |
177 |
0 |
20% |
| /usr/local/lib/python3.5/site-packages/pymongo/bulk.py |
280 |
220 |
0 |
21% |
| /usr/local/lib/python3.5/site-packages/pymongo/client_options.py |
96 |
11 |
0 |
89% |
| /usr/local/lib/python3.5/site-packages/pymongo/collection.py |
622 |
449 |
0 |
28% |
| /usr/local/lib/python3.5/site-packages/pymongo/command_cursor.py |
112 |
89 |
0 |
21% |
| /usr/local/lib/python3.5/site-packages/pymongo/common.py |
246 |
142 |
0 |
42% |
| /usr/local/lib/python3.5/site-packages/pymongo/cursor.py |
491 |
299 |
0 |
39% |
| /usr/local/lib/python3.5/site-packages/pymongo/cursor_manager.py |
10 |
3 |
0 |
70% |
| /usr/local/lib/python3.5/site-packages/pymongo/database.py |
348 |
240 |
0 |
31% |
| /usr/local/lib/python3.5/site-packages/pymongo/errors.py |
42 |
10 |
0 |
76% |
| /usr/local/lib/python3.5/site-packages/pymongo/helpers.py |
157 |
120 |
0 |
24% |
| /usr/local/lib/python3.5/site-packages/pymongo/ismaster.py |
64 |
13 |
0 |
80% |
| /usr/local/lib/python3.5/site-packages/pymongo/message.py |
460 |
332 |
0 |
28% |
| /usr/local/lib/python3.5/site-packages/pymongo/mongo_client.py |
359 |
193 |
0 |
46% |
| /usr/local/lib/python3.5/site-packages/pymongo/mongo_replica_set_client.py |
9 |
3 |
0 |
67% |
| /usr/local/lib/python3.5/site-packages/pymongo/monitor.py |
73 |
22 |
0 |
70% |
| /usr/local/lib/python3.5/site-packages/pymongo/monitoring.py |
125 |
77 |
0 |
38% |
| /usr/local/lib/python3.5/site-packages/pymongo/monotonic.py |
13 |
2 |
0 |
85% |
| /usr/local/lib/python3.5/site-packages/pymongo/network.py |
97 |
32 |
0 |
67% |
| /usr/local/lib/python3.5/site-packages/pymongo/operations.py |
71 |
35 |
0 |
51% |
| /usr/local/lib/python3.5/site-packages/pymongo/periodic_executor.py |
71 |
26 |
0 |
63% |
| /usr/local/lib/python3.5/site-packages/pymongo/pool.py |
276 |
107 |
0 |
61% |
| /usr/local/lib/python3.5/site-packages/pymongo/read_concern.py |
25 |
12 |
0 |
52% |
| /usr/local/lib/python3.5/site-packages/pymongo/read_preferences.py |
119 |
40 |
0 |
66% |
| /usr/local/lib/python3.5/site-packages/pymongo/response.py |
29 |
5 |
0 |
83% |
| /usr/local/lib/python3.5/site-packages/pymongo/results.py |
78 |
30 |
0 |
62% |
| /usr/local/lib/python3.5/site-packages/pymongo/server.py |
77 |
26 |
0 |
66% |
| /usr/local/lib/python3.5/site-packages/pymongo/server_description.py |
69 |
17 |
0 |
75% |
| /usr/local/lib/python3.5/site-packages/pymongo/server_selectors.py |
38 |
25 |
0 |
34% |
| /usr/local/lib/python3.5/site-packages/pymongo/server_type.py |
3 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/pymongo/settings.py |
44 |
4 |
0 |
91% |
| /usr/local/lib/python3.5/site-packages/pymongo/son_manipulator.py |
67 |
46 |
0 |
31% |
| /usr/local/lib/python3.5/site-packages/pymongo/ssl_support.py |
73 |
46 |
0 |
37% |
| /usr/local/lib/python3.5/site-packages/pymongo/thread_util.py |
80 |
30 |
0 |
62% |
| /usr/local/lib/python3.5/site-packages/pymongo/topology.py |
181 |
89 |
0 |
51% |
| /usr/local/lib/python3.5/site-packages/pymongo/topology_description.py |
133 |
80 |
0 |
40% |
| /usr/local/lib/python3.5/site-packages/pymongo/uri_parser.py |
146 |
111 |
0 |
24% |
| /usr/local/lib/python3.5/site-packages/pymongo/write_concern.py |
40 |
20 |
0 |
50% |
| /usr/local/lib/python3.5/site-packages/pytz/__init__.py |
182 |
111 |
0 |
39% |
| /usr/local/lib/python3.5/site-packages/pytz/exceptions.py |
6 |
0 |
0 |
100% |
| /usr/local/lib/python3.5/site-packages/pytz/lazy.py |
97 |
54 |
0 |
44% |
| /usr/local/lib/python3.5/site-packages/pytz/tzfile.py |
81 |
66 |
0 |
19% |
| /usr/local/lib/python3.5/site-packages/pytz/tzinfo.py |
178 |
126 |
0 |
29% |
| /usr/local/lib/python3.5/site-packages/six.py |
444 |
226 |
0 |
49% |
| /usr/local/lib/python3.5/site-packages/werkzeug/__init__.py |
29 |
8 |
0 |
72% |
| /usr/local/lib/python3.5/site-packages/werkzeug/_compat.py |
148 |
80 |
0 |
46% |
| /usr/local/lib/python3.5/site-packages/werkzeug/_internal.py |
235 |
163 |
0 |
31% |
| /usr/local/lib/python3.5/site-packages/werkzeug/datastructures.py |
1285 |
771 |
0 |
40% |
| /usr/local/lib/python3.5/site-packages/werkzeug/exceptions.py |
173 |
17 |
0 |
90% |
| /usr/local/lib/python3.5/site-packages/werkzeug/filesystem.py |
22 |
13 |
0 |
41% |
| /usr/local/lib/python3.5/site-packages/werkzeug/formparser.py |
246 |
173 |
4 |
30% |
| /usr/local/lib/python3.5/site-packages/werkzeug/http.py |
388 |
312 |
4 |
20% |
| /usr/local/lib/python3.5/site-packages/werkzeug/local.py |
213 |
69 |
0 |
68% |
| /usr/local/lib/python3.5/site-packages/werkzeug/routing.py |
623 |
301 |
0 |
52% |
| /usr/local/lib/python3.5/site-packages/werkzeug/test.py |
462 |
194 |
0 |
58% |
| /usr/local/lib/python3.5/site-packages/werkzeug/urls.py |
415 |
176 |
0 |
58% |
| /usr/local/lib/python3.5/site-packages/werkzeug/utils.py |
243 |
166 |
0 |
32% |
| /usr/local/lib/python3.5/site-packages/werkzeug/wrappers.py |
568 |
247 |
0 |
57% |
| /usr/local/lib/python3.5/site-packages/werkzeug/wsgi.py |
472 |
311 |
0 |
34% |


Rectory School Enrichment System
You are logged in as {{ user.email }}.
{% if optionToday or advisees %}
Today's information
{% now "F jS" %}
{{ currentAdvisor.name }}
{% if optionToday %}
- Students coming to see me in {{ optionToday.location }}
{% if optionToday.students.count %}
{% for student in optionToday.students.all %}
- {{ student.name }}
{% endfor %}
{% else %}
- None. Please stay in your room, as students may still be sent to you.
{% endif %}
{% endif %}
{% if advisees %}
- My advisee's locations
{% for advisee, location in advisees %}
- {{ advisee.name }}: {{ location }}
{% endfor %}
{% endif %}
Generated at {% now "c" %}
{% endif %}


Traffic Ops - Default Profiles¶
Traffic Ops has the concept of Parameters and Profiles, which are an integral function within Traffic Ops. To get started, a set of default Traffic Ops profiles need to be imported into Traffic Ops to get started to support Traffic Control components Traffic Router, Traffic Monitor, and Apache Traffic Server.
Download Default Profiles from here
Minimum Traffic Ops Profiles needed¶
- EDGE_ATS_<version>_<platform>_PROFILE.traffic_ops
- MID_ATS_<version>_<platform>_PROFILE.traffic_ops
- TRAFFIC_MONITOR_PROFILE.traffic_ops
- TRAFFIC_ROUTER_PROFILE.traffic_ops
- TRAFFIC_STATS_PROFILE.traffic_ops
Steps to Import a Profile¶
- Sign into Traffic Ops
- Navigate to ‘Parameters->Select Profile’
- Click the “Import Profile” button at the bottom
- Choose the specific profile you want to import from your download directory
- Click ‘Submit’
- Continue these steps for each Minimum Traffic Ops Profiles needed above


--- layout: archive title: Zulip Chat Archive permalink: /stream/144837-PR-reviews/topic/.231521.20rename.20type.20variables.html ---
I'd like to work a bit on that PR. How to we coordinate?
@Rob Lewis are you currently working on it?
Claim a file. I'm done with it for the evening at least.
Is there an ordering?
Uh, I don't think so.
Let's say I'm doing bilinear_form.lean
I'll create a task list.
What are the odds we accidentally change something non-cosmetic in this PR?
We should probably write something to check that we don't accidentally mess things up.
But I'm not sure how.
Well, we will check it will build
I assumed the three files that were edited were done.
See the list on the PR page
Yeah, they're done.
But I'm worried we'll accidentally specialize a universe level or something that doesn't break the build.
We probably want to update algebra.module
too.
Can't you use meta-programming to assert that two statements are the same modulo naming?
We could have a folder renamed_linear_algebra
to access both versions at the same time
Yes, but you need to fix the nameclashes somehow. I'm not sure if putting the whole file in a namespace will work.
True.
What should be the name of another ring? S
?
I used M M₂ V V₂ ...
. Didn't have more than one ring, but there's an obvious pattern.
Actually it's not really a second ring. The first one is a ring
and the second one is comm_ring
, but the first variable is still there.
Up to you then.
bilinear_form.lean
is done
I'll work on determinant
It's also done
That was actually a rebellious file.
I'll move to direct_sum_module
I'll start working on dual.lean
Lol... it was already written by a mathematician. Next.
I'll start on finite_dimensional.lean
Is it ok if fields are called K
? Or do we insist on blackboard bold k
?
In the algebra directory we are using K
a lot
If there are no compact subgroups in sight, I wouldn't mind K
Oh, wait, I just noticed I used a different k
from Alex.
We should probably pick one and standardize on it if we're going through all this trouble.
But a field extension is called L
And L
over blackboard bold k
looks weird
So I think we should allow different things for fields in different parts of the library
I'm currently looking at finsupp_vector_space.lean
.
It needs index sets for families of vectors. Do we call those alpha
? or iota
?
iota
for index sets.
I don't care what K we use as long as we use the same K.
direct_sum_module
is done
is used in the calculus library
Yes, and for good reasons
But it doesn't scale
I meant: I don't think it matters too much to be consistent from linear_algebra
to calculus
And I guess it's not too late to switch in the PR, especially since is easy to search and replace (after checking there aren't too many k
or K
lying around)
I've done matrix.lean
I'll do sesquilinear
I'm going to stop for tonight
Good luck with the last 3 files
Ok, thanks!
I've done sesquilinear, moving to tensor product
Done, moving to finsupp
I changed my kappas to bb k's.
In finsupp, do you want to replace alpha with iota?
I think it's a different usage, but one could disagree
The field extension could be 𝕃
or 𝕝
(the latter is not very readable I think).
All files in linear_algebra
have been edited.
How risk-tolerant are we feeling about merging this? I'm still not sure how to (easily) write a metaprogram that checks all declarations are alpha-equivalent to what they were before.
Chris' PRs are getting dangerously close to here. #1523 will conflict if we do this renaming in algebra.module
, which we eventually should.
Did you try using that branch with the capset repo?
and sensitivity conjecture? As far as I know, this are the only uses of this linear algebra lib
Hmm, no, that's a reasonable test. I'll try that in a bit.
Definitely not comprehensive, but it's a start.
If you have two version which you really think only differ by alpha renaming then probably their lean --export
s should be the same if you ignore the name part of a #NS
Though I don't know how stable the numbering of items is, maybe it depends on variable names somehow
Chris' PRs are getting dangerously close to here. #1523 will conflict if we do this renaming in
algebra.module
, which we eventually should.
There's no need for it to all be done in one go. Why not merge what's done already, and finish the rest off in some other PR?
How risk-tolerant are we feeling about merging this? I'm still not sure how to (easily) write a metaprogram that checks all declarations are alpha-equivalent to what they were before.
I'm going to attempt to do this. We think lin_alg_rename
is the same as commit 7c560512b849832824493949a29fbf6b6b7ac223 right?
How risk-tolerant are we feeling about merging this? I'm still not sure how to (easily) write a metaprogram that checks all declarations are alpha-equivalent to what they were before.
I'm going to attempt to do this. We think
lin_alg_rename
is the same as commit 7c560512b849832824493949a29fbf6b6b7ac223 right?
Yeah, that should be right. I'm building the exports right now, but it's slow on my laptop.
Heh, one of the exports somehow has 4000 more lines than the other...
Either something changed, or it's not an accurate way to compare.
Unfortunately if the exports are not the same then it's going to be very hard to tell how they differ
Here is my attempt to alpha normalize everything. Does it look reasonable? It's quite slow to run on all of the core library already...
open tactic expr meta def gen_name (hint : string) : state_t nat tactic name := do i ← get, put (i+1), return (mk_simple_name (hint ++ to_string i)) meta def alpha_normalize_aux : expr → state_t nat tactic expr | e@(var _) := return e | e@(sort _) := return e | e@(const _ _) := return e | (mvar _ _ _) := state_t.lift (fail "Unexpected mvar in type") | (local_const _ _ _ _) := state_t.lift (fail "Unexpected local_const in type") | (app e₁ e₂) := app <$> alpha_normalize_aux e₁ <*> alpha_normalize_aux e₂ | (lam _ bi e₁ e₂) := lam <$> gen_name "x" <*> pure bi <*> alpha_normalize_aux e₁ <*> alpha_normalize_aux e₂ | (pi _ bi e₁ e₂) := pi <$> gen_name "a" <*> pure bi <*> alpha_normalize_aux e₁ <*> alpha_normalize_aux e₂ | (elet _ bi e₁ e₂) := elet <$> gen_name "v" <*> pure bi <*> alpha_normalize_aux e₁ <*> alpha_normalize_aux e₂ -- I have no idea whether this macro case is reasonable | (macro m es) := macro m <$> mmap alpha_normalize_aux es meta def alpha_normalize (e : expr) : tactic expr := prod.fst <$> ((alpha_normalize_aux e).run 0) meta def emit_declaration (d : declaration) : tactic unit := do let ls := (list.range d.univ_params.length).map (λ i, level.param (mk_simple_name $ "u" ++ to_string i)), t ← d.instantiate_type_univ_params ls, t' ← alpha_normalize t <|> fail ("failed on declaration " ++ d.to_name.to_string), vs ← match d with | (declaration.defn _ _ _ _ _ _) := do v ← d.instantiate_value_univ_params ls, v' ← alpha_normalize v <|> fail ("failed on declaration " ++ d.to_name.to_string), return v'.to_string | _ := return "_" end, tactic.trace (d.to_name.to_string ++ "\t" ++ t'.to_string ++ "\t" ++ vs), return () meta def emit_all : tactic unit := do e ← get_env, e.fold (return ()) (λ d m, emit_declaration d >> m) set_option pp.all true example : unit := begin emit_all, constructor end
oh, actually it only took 43 seconds to run on core
The idea is to run this on both mathlibs, then sort and compare the outputs. I guess this only checks the types currently, not the values (for definitions).
The sensitivity proof is very slightly broken but not caused by our changes.
Incidentally, I just noticed something. Tooltips in VSCode specialize universe levels when you hover over declarations to see the type, but only sometimes. Hover over vector_space.dim
in the following and compare.
lemma f {α : Type 10} [add_comm_group α] [vector_space ℝ α] : true := have vector_space.dim ℝ α = 0 := sorry, trivial def g {α : Type 10} [add_comm_group α] [vector_space ℝ α] := vector_space.dim ℝ α
I think that script looks reasonable? The output will be enormous.
I modified my tactic to emit the values of definitions as well.
We really need to PR that sensitivity thing to mathlib's example folder
Yeah, it's been on my todo list for ages but hasn't reached the top.
some of the individual types it outputs are around a megabyte
some of the individual types it outputs are around a megabyte
Sounds about right!
Yeah, it's been on my todo list for ages but hasn't reached the top.
Same here...
It still takes less than a minute on core, so hopefully it will take less than a day on mathlib?
The breakage in the sensitivity proof was really minor, but one of the breaks I don't understand.
It's easy to fix but I don't know why it happened.
It still takes less than a minute on core, so hopefully it will take less than a day on mathlib?
And you have to run it twice to compare!
Luckily I didn't try to make it process anything in parallel so my laptop can do both runs at once
So the script noticed that in sesq_form.to_module
the order of the two universe parameters changed
which is not that surprising, and almost certainly harmless?
Oh, it's not the universe arguments order that changed
it's the order of various implicit/type class arguments. It used to be
sesq_form.to_module Pi {a0 : Type.{u0}} [a1 : add_comm_group.{u0} a0] {a2 : Type.{u1}} [a3 : comm_ring.{u1} a2] [a4 : module.{u1 u0} a2 a0 (comm_ring.to_ring.{u1} a2 a3) a1] ...
and now it's a more logical
sesq_form.to_module Pi {a0 : Type.{u1}} [a1 : comm_ring.{u1} a0] {a2 : Type.{u0}} [a3 : add_comm_group.{u0} a2] [a4 : module.{u1 u0} a0 a2 (comm_ring.to_ring.{u1} a0 a1) a3] ...
Was that the only change that it found?
It's currently trying to emit what must be a rather large type
Hmm. It is a semantic change, but an improvement. We can take that one.
Reid, you're not checking all of mathlib, are you? It's easy enough to only run that on files in the linear_algebra directory.
I just noticed that wasn't in the script you posted.
Indeed that optimization seems to be worth implementing
How can I check whether a string contains another string?
sanity_check
is probably the easiest example of this to follow.
oh, I have to use mathlib apparently
Update: It's still slow
But slow on the 768 declarations in linear algebra instead of the 32098 in mathlib plus whatever's in core.
It's apparently been stuck trying to print the type of a single declaration for more than an hour
I fear my day estimate was optimistic
rwbarton@operad:~/math/lean/mathlib$ head -131 after-rename/la.out | tail -1 | wc 1 57995424 546484410
Okay I ignored autogenerated and internal things and now it takes 12 seconds.
I need to meet someone for dinner now, but I can say that there are only 7 changes and the total sizes of the files are equal, which makes me think they are all of the same form where arguments got permuted. Though universe variables accidentally becoming unified would also be consistent with the file size not changing
I'll look at these more closely after dinner
Or here are the changes if other people want to look out.diff
Seems like there are actually quite a few changes: out.word_diff
But as far as I can see it is mostly reordering universe variables...
But this time its hard to read again, because the names don't have any semantics...
Ooh, read that file with less -R out.word_diff
to see the colors
@Reid Barton Your tool should probably be preserved in the scripts/
directory...
Well, there are definitely permuted arguments, which makes it really really hard to see if anything else changed.
After squinting at the diff, I'm more confident that this is safe. But still not 100%.
Same feeling over here
I think I'm confident enough to merge and patch if/when universe issues show up.
Not thrilled about the permuted arguments, I wish this had been a purely syntactic change. But I'm not gonna try to fix this.
I'm sorry, I might have been responsible for this.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


VOLKSWAGEN POLO, A9351KC
Price includes:
- Leading name
- Flight numbers
- Arrival / departure date and time
- Party size (Adults and children)
VOLKSWAGEN POLO, A9351KC
Price includes:
- Leading name
- Flight numbers
- Arrival / departure date and time
- Party size (Adults and children)
VOLKSWAGEN POLO, A9351KC
Price includes:
- Leading name
- Flight numbers
- Arrival / departure date and time
- Party size (Adults and children)


Hack-ing the Coq SSR
Olivier Danvy
(with suitable apologies to John Lennon, Paul McCartney, and Georges Gonthier)
Ooooh, got it from Inr'a web S.I.T.E.
Didn't get to bed last night
Oh the way the lecture notes were on my knee
Man I had a fruitful night
I'm hack-ing the Coq SSR
You do know how nerdy you are boy
Pack-ing the Coq SSR
Been at it so short I hardly know the pace
Gee Leibniz equa-lity
Blimey Howard Curry I construct my case
SS Reflect qua-lity
I'm pack-ing the Coq SSR
You do know how spunky you are boy
Hack-ing in Coq
Prov-ing in Coq
Us-ing the Coq SSR
Well the proof tactics really knock me out
They keep the rest behind,
And System F makes me sing and shout
Proof Gen'ral's always on my-my-my-my-my-my-my-my-my screen
Aw come on!
Ho yeah!
Ho yeah!
Ho ho yeah!
Yeah yeah!

I'm grooving with Coq SSR
Yes, Siree!
Yeah, hacking the Coq SSR
Ha ha
[Back to the course page]
Last modified: Thu Jan 3 18:33:21 +08 2019


About Huaian
Huai'an, referring to "Everlasting Peace of Huai River" in Mandarin, is a city with its mythology on the ability of flood control techniques in the ancient Chinese history, in which a legendary emperor, the Great Yu, was once taming the Huai River.Su is short for Jiangsu, a province located along the eastern coast of China between east longitude 116°18′and 121°57′, north latitude 30°45′and 35°20′. With Yellow Sea to its east, Jiangsu adjoins Anhui and Shandong provinces in the west and north respectively, with Zhejiang province and the city of Shanghai as its neighbors in the southeast.
Huai'an is the land where two major freshwater lakes, Hongze and Baima Lakes, reside. It is the land where a well-known Chinese cuisine, Huaiyang Cuisine, originated.Huai'an has been proclaimed a national historical and cultural city by the State Council. Its economy is booming and it has established multiple ties with more than 100 countries and regions.
Geography, Climate and Resources
Located in the Northern Jiangsu Plain, Huai'an City borders Anhui Province to the southwest, Yangzhou to the southeast and Lianyungang to the north, and 2 hrs of driving distance to Nanjing, provincial capital of Jiangsu, and 4 hrs to Shanghai.
One of the attractions of the city is Lake Hongze, the fourth largest freshwater lake in China, occupying an area of 2,069 square kilometers. It has been dubbed "Lake of Treasures". Adjacent to the Grand Canal and other major rivers, Huai'an has a highly developed irrigation and water transportation system. The most important natural resource，besides water，includes rock salt, crude oil and natural gas.
LHuai'an has a subtropical monsoon climate with humid changeable wind and the average temperature is 15-20°C. The city has an abundant annual rainfall and the raining season is from the middle of June to July.
Jurisdiction Topography
Huai'an jurisdiction includes 8 county-level divisions, of which four are districts, four are counties. The special industrial zones are specifically designated as new investment areas. The districts and counties are as follows:
--HuaiAn District
--Huaiyin District
--Qinghe District
--Qingpu District
--Hongze County
--Jinhu County
--Lianshui County
--Xuyi County
Transportation and Tourism
Huai'an had its first railway, Xin-Chang Railway, in 2005, which runs through the city from its north to south. Five major highways/expressways connect Huai'an to all its neighbors and other provinces, including Jinghu (Beijing-Shanghai), Ningsuxu (Nanjing-Suqian-Xuzhou), Huaiyan (Huai'an-Yancheng), Huaisu (Huai'an-Suqian) and Ninghuai (Nanjing-Huai'an) expressways. Huai'an airport is under construction. Huai'an port is a prestigious commercial port in the Jiangsu North, using its water resources including the Grand Canal and the North Jiangsu Irrigation Channel.Tourist destinations include many parks, gardens and historical relics, including Ming Royal Cemetery, Xuyi National Forest Park, Hongze Lake, etc.
Education
Huai'an has well instituted compulsory primary education system and the secondary schools achieves significant graduate rate. There are seven higher learning institutions established in the city, including Huaiyin Institute of Technology, Huaiyin Teachers' College, Huaian Information & Technology Institute, etc.
Notable Personage
JHuai'an is well known with its notable figures in Chinese history. The well-respected first Chinese Premier of the People's Republic of China, Zhou Enlai, was born and spent twelve years of his childhood here. wHan Xin was a military general and strategist in the Han Dynasty. With his help, the first Han emperor, Liu Bang, established the Han. Wu Cheng'an, (1500-1582), was a novelist and he is the author of Journey to the West, etc.


Busby: first look at documentary on the legendary Manchester United manager – video teaser
In this exclusive clip from the upcoming Busby documentary, Sir Bobby Charlton recounts being called up to the first team for the first time. Charlton, an 18-year-old at the time, was suffering with an ankle injury: ‘If there was one time I didn’t want to play it was that day.’ Busby’s decision to put him in the first team would coin the phrase the Busby Babes.
Busby is in select cinemas from 11 November, and can be owned on digital from 15 November, and DVD & Blu-ray from 18 November.


hmmm.. getting myself worked up enough to also go by another BTC of ARRR I think ..
Alright07-May-19 03:32 PM
@Hollowman9000That’s the thing, if you’ve been in crypto long enough it would be an impossible task to try to “source” your funds They see them as purely speculative assets.  Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair...
Check out the official music video for "Thorn In My Side" by Eurythmics Preorder Eurythmics vinyl released in 2018 -http://smarturl.it/EU_multi Listen on Spo...
mrtzmp307-May-19 09:06 PM
Thx you based whale this was my best Trading days ever god Bless you
Pls stop now the pump
I know you read here
1
Tek07-May-19 09:30 PM
@here your opinion on the recent bitfinex tether sutff?
think it will make butts go to 2k?
stuff will implode?
etc
or is it another round of fud to make you sell coins
Cryptoon07-May-19 09:38 PM
Recent?
The thing from last week?
Non-issue as far as the markets are concerned
Bitfinex is planning a 1 billion IEO for their token so take back the 850m usd
We have discovered a large scale security breach today, May 7, 2019 at 17:15:24. Hackers were able to obtain a large number of user API keys, 2FA codes, and potentially other info. The hackers used...


Before Change
assert_array_almost_equal(_preds, _other_preds)
// now remove the pickle file
os.unlink(fl)
// now show that since we fit the ARIMA with an exogenous array,
// we need to provide one for predictions otherwise it breaks.
with pytest.raises(ValueError):
After Change
// pickle this for the __get/setattr__ coverage.
// since the only time this is tested is in parallel in auto.py,
// this doesn"t actually get any coverage proof...
fl = os.path.join(tdir, "some_temp_file.pkl")
with open(fl, "wb") as p:
pickle.dump(arima, p)
// show we can predict with this even though it"s been pickled


12 Jun 2015
Kazbegi III - Last Day in the Mountains
One advantage of having my writing lag behind is that I get to consider episodes of my trip in hindsight. A pattern I keep noticing is how some weeks are infinitely more eventful than others. This is the third article on Kazbegi (a trip that lasted all of the 3,5 days). Yet I know that other periods of several weeks will barely warrant more than one article. The obvious lesson is that a trip of several months is not just one exciting adventure after another. I suppose it could be, if I really wanted it to be, but who has the energy? Instead, I find that enjoying some downtime can be much more educational than frantic sightseeing. Stay in one place for a bit, have some tea, observe what is happening around you. Heck, maybe use the time to write down how you got there!
Aren’t these story-in-a-story things fun? So artistic, much wow!
Day 3 - Waterfalls
We had arranged our departure from Kazbegi for the third day. Before we left this beautiful part of the world we wanted to see one last sight though: The waterfall at Gveleti.
Our driver from the day before drove us up towards the Russian border for about half an hour, before letting us hop out into the sun. After some back and forth (employing the usual amount of waving and pointing), we understood where he wanted us to go and we stalked off into the greenery.
Include file ‘image.html img=”pics/IMG_20150603_112753_scaled.jpg” title=”Image” caption=”The fellowship” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150603_112753.jpg”’ contains invalid characters or sequences
Include file ‘image.html img=”pics/IMG_20150603_113901_scaled.jpg” title=”Image” caption=”” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150603_113901.jpg”’ contains invalid characters or sequences
We quickly found the fast-flowing stream and then followed it up-hill. At that point, I definitely began to notice the ascents and descents of the previous days: My legs began to feel like rubber and it’s almost a miracle I didn’t faceplant straight into the stream.
Include file ‘image.html img=”pics/IMG_20150603_114044_scaled.jpg” title=”Image” caption=”” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150603_114044.jpg”’ contains invalid characters or sequences
Eventually, we found the waterfall. The stream fell from a rocky ledge several meters up in the air. The water was then collected in a shallow basin before running down the gorge into the valley. Where we stood, a cool spray was flying everywhere.
Include file ‘image.html img=”pics/IMG_20150603_114307_scaled.jpg” title=”Image” caption=”The promised waterfall” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150603_114307.jpg”’ contains invalid characters or sequences
Include file ‘image.html img=”pics/IMG_20150603_114720_scaled.jpg” title=”Image” caption=”The view from up there wasn’t so bad, either.” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150603_114720.jpg”’ contains invalid characters or sequences
Having relaxed at the waterfall for a bit, we climbed down the path and walked back to the waiting car.
Having seen this sight, we decided that it was time we drove back to Tbilisi. I recall sleeping through most of the drive back, but I did get out of the car once we stopped at this fancy monument:
Include file ‘image.html img=”pics/IMG_20150603_131417_scaled.jpg” title=”Image” caption=”Russian-Georgian Friendship Monument…hehe, yeah, I know!” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150603_131417.jpg”’ contains invalid characters or sequences
Back in Tbilisi
In Tbilisi, I checked back into the same excellent hostel I had stayed at before. I then spent another four days in Tbilsi, enjoying the usual dinners and drinks with the others.
Include file ‘image.html img=”pics/IMG_20150606_203754_scaled.jpg” title=”Image” caption=”Is that a dead fish, nailed to a painting? No, that would be absurd: It’s obviously held in place by a screw!” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150606_203754.jpg”’ contains invalid characters or sequences
One memory I will always cherish: We took a cab to a student-y bar near Rustaveli Square and had one hell of an evening. Chacha and beer flowed freely there. I vaguely recall randomly pointing at people, yelling “You there, you look interesting. Sit down!” To my great surprise, they tended to follow instructions rather well. That way I got to meet a singer, an event manager, the owner of the bar and a software developer from the Crimean who was very glad about finally having access to the Russian labor market. It was a long, long night…
Include file ‘image.html img=”pics/IMG_20150604_003219_scaled.jpg” title=”Image” caption=”A student bar in Tbilisi (early evening)” url=”http://www.escapingsloth.com/pics/fullsize/IMG_20150604_003219.jpg”’ contains invalid characters or sequences
Eventually I had to say my goodbyes to the others, who moved on to explore other parts of Georgia. Instead, I elected to book a ticket for the night train to Yerevan.
Until next time,
Arne


Here are some calculators and forms I've made
Aalfylearning
Budidarmawan
Charlieboyt
Customgardensol
Quiglag
Theraggy


Translation
TranslateAction AdjustLanguage
To make the verbs work with translations, strings are being used to define the button graphics, hotkeys and so on. If you like to customize your game or get it translated, you need to take a closer look at the function AdjustLanguage. The functions getInteger and clearToSpace are being used to extract the informations from those white space seperated strings.
TranslateAction
function TranslateAction(int action, int tr_lang);
This function defines the text for the verb buttons, e.g. if you click on the talk verb button, “Talk to” is being displayed in the action/status bar. The second parameter defines the returned language. If you want to customize this text, you have to edit this function.
AdjustLanguage
function AdjustLanguage();
This function has to be called from inside the global script’s game_start() function. It sets up everything related to the verb buttons, so you need to take a look at this, if you want to customize your GUI. It is also import to understand, how this function works, if you want to get you game translated. If you take a closer look at this function, you will notice the following lines:
SetActionButtons(eGA_GiveTo, "a_button_give
0
1
2
Gg");
SetActionButtons(eGA_PickUp, "a_button_pick_up
1
7
8
Pp");
SetActionButtons(eGA_Use, "a_button_use
2
13
14
Uu");
and so on.
Your verb buttons are initialized here, by calling the function SetActionButtons. The first parameter is the action being called by the button, the second one is a string containing the following informations: * Name * GUI-button ID * Spriteslot normal * Sprite slot highlighted * Keyboard-Shortcut.
 It doesn’t matter, how many spaces are used to seperate the parameters, as long as it is at least a single blank character.
This line
SetActionButtons(eGA_GiveTo, "a_button_give 0 1 2 Gg");
tells the AGS:
- The button for the action eGA_GiveTo is named “a_button_give” (also this information is not being used outside of this function).
- The buttons has the GUI-ID 0. If you take a look at the GUI “gMaingui”, you can see several buttons. The one with the ID 0 will be used for the action you define here.
- The button will use the spriteslot 1 as the default graphic and
- spriteslot 2, if it’s highlighted. This can be a little bit confusing, since if you look at gMaingui, those graphics have already been assigned. But you also need to define the graphics slots in this function, because eventually these are the ones being used.
- The last parameter defines the hotkey for this action.
You might wonder, why this function overrides the values of gMaingui. But in some other languages the translation for use could be a very long word, so you might want to swap it with something else. E.g. in german “use” means “Benutze”, so you need more space for the verb. But “pick up” can be translated to “nimm”, so you save some space here. Now in your translation file (e.g: german.tra), you can simply swap the button with GUI of the english “pick up” with the german “Benutze”.
Of course you don’t have to do that for the languages already provided
This function also sets up the fonts for every written text (Option GUI, Status Bar and so on). This is done by this string:
font_info=GetTranslation("font_320: 1
0
0
0
0
0
0
3
0
0
0
0
0
3
3");
Each numer stands for a text element. The first number is the spoken text, the second number defines the font in the status bar. The other columns are explained in the code itself, if you’d like to customize them.
See also: SetActionButtons


{{ 'Hello World!' | interpolate }}
Hi! I am Diego Schmaedech. Physicist by training. Software Developer. Entrepreneur.
Say Hello to Me!
×
Send message
Your message


--About--
CENTRAL
LIBRARY
Central Library is India's biggest library offering Books to everyone with around 1000000+ books. It is maintained directly by the central government of India.