Govt mops up Rs 4,973cr revenue from auctioned coal mines
In 2017-18, the revenue stood at Rs 1,115.02 crore while in the preceding fiscal, it was Rs 1,018.117 crore.
by PTIThe government has collected Rs 4,972.738 crore in revenue from auctioned coal blocks since financial year 2014-15, Parliament was informed Monday. Of the total revenue garnered till October 31, the maximum of Rs 1,280.58 crore was mopped up in 2018-19.
In 2017-18, the revenue stood at Rs 1,115.02 crore while in the preceding fiscal, it was Rs 1,018.117 crore.
In 2015-16, the government collected Rs 663.774 crore in revenue while in the preceding year, the figure stood at Rs 241.294 crore, Coal Minister Pralhad Joshi said in a reply to the Rajya Sabha.
Under Coal Mines (Special Provisions) Act, 2015, 31 mines have been allocated through auction so far, the minister said.
Of the 31 mines, allocation of nine mines has been terminated for various reasons, Joshi said adding that of the remaining 22 mines, 13 have got opening permission and 11 are producing coal.
The 11 mines have produced 32.34 million tonne of coal from 2015-16 till October 31, 2019, the minister said. While four producing mines are in Chhattisgarh, two each are in Madhya Pradesh, West Bengal and Maharashtra and one in Jharkhand, the minister said.


To actually draw this many triangles would be a very slow process, so terrains use a technique known as
'dynamic level of detail' to speed things up.
This basically means that instead of drawing all of the triangles in a terrain, a smaller number of triangles is used to render an approximation of the terrain.
Terrains have a few limitations:
You can create terrains either by loading in a heightmap image, or by creating an 'empty' terrain and setting the height of each vertex yourself.
A heightmap image is simply a grayscale image, where black pixels represent 'low' vertices, and white pixels represent 'high' vertices. A heightmap image must be of a valid terrain size - ie: square, and a power of 2 wide/high.
When a terrain is created, its width and depth are the same as the size of the terrain, and its height is 1. For example, if you create a terrain using:
terrain=CreateTerrain( 32 )
The terrain will extend from 0 to 32 along the x and z axis', and from 0 to 1 along the y axis.
However, you are free to position and scale the terrain as you see fit using entity manipulation commands such as ScaleEntity, PositionEntity. For example:
| ;terrain is 32 x 1 x 32 terrain=CreateTerrain( 32 ) ;terrain is now 320 x 100 x 320 ScaleEntity terrain,10,100,10 ;and centred (on x/z axis') at 0,0,0 PositionEntity terrain,-160,0,-160 |
You can directly control how many triangles are used to approximate a terrain using the
TerrainDetail command.
Using less triangles will naturally result in better speed, but beware that below a certain threshold your terrain will start to behave very strangely!
For example, if you ask Blitz3D to render a detailed 1,000,000 triangle terrain using only 100 triangles, chances are it just wont be able to do a decent job.
This usually leads to a phenomenon known as 'pop-in', where Blitz3D just isn't able to make its mind about about how to draw the terrain, and you end up with vertices abruptly changing position, or 'popping', when the camera view changes.
So what number of triangles should be used? Well, this is definitely a 'trial and error' kind of thing and depends on a number of factors:
You can reduce the number of triangles needed to represent a terrain using the following tricks:
If all of this sounds a bit wishy-washy, well, it is!
Generating nice looking terrain with minimum pop-in is as much an artform as it is a science.
Blitz3D also provides a technique called 'vertex morphing' to help reduce pop-in. Vertex morphing involves Blitz3D automatically smoothing out the terrain a little to reduce pop-in. The
TerrainDetail command is also used to enable vertex morphing.
The ModifyTerrain command is used to change the height of a terrain vertex, for example:
| ;create a terrain of size 32. terrain=CreateTerrain( 32 ) ;push the centre vertex up half-way. |
The parameters used with ModifyTerrain must be given in 'terrain coordinates'. This means that the x and z values should always be from 0 to the size of the terrain, and the height value should always be from 0 to 1. In other words, any scale, position or rotation applied to the terrain will be ignored.
By default the terrain you create will be just a plain colour, but by using the EntityTexture command it is possible to apply a texture brush to the whole landscape. Unfortunately at this time, it is not possible to texture different parts of the terrain with different textures. But fear not !, remember a brush can have 8 multitextures applied to it. By carefully building up these textures - it is possible to have different texturemaps applied onto the same landscape.


We have access to a wide range of top talent through the relationships that we have built with our highly skilled candidates.
Whether your recruitment need is big or small we can tailor your recruitment plan to suit your budget.
We always strive to source, engage and to progress candidates in line with your recruitment timeline.
You will enjoy peace of mind that you have acquired a candidate with the right skills, commitment, experience, personality and cultural fit to join your team.
Our expert recruitment consultant will be available to you through all steps of the hiring process providing advice, support and guidance.
We use an innovative approach that has allowed us to find a solution for industries that are experiencing skill shortages.
Your expert consultant will share industry knowledge and insights across the recruitment market to assist with your hiring decisions.
Fill in your details in the form below and we will be in touch to discuss your hiring needs!
For the past 30 years, the team here at Portrec have been going above and beyond in both sourcing talent and helping you make the best decisions for your business. Our unique, forward-thinking approach makes the process as stress-free and efficient as possible for you.
Talent sourcing can be a frustrating and time-consuming process, but the driven mindset of our employees means that we go that extra mile so you don’t have to. It is this desire and determination which contributes to our excellent success rate and which ensures you can confidently leave your hiring needs in our capable hands.
Portrec’s Accounting and Finance team has been a valuable recruitment partner. I found their insights around the finance market in terms of skills and what other companies are doing in certain roles and structures to be very useful and helpful in compiling competency skill sets for different roles.
Whether you need to find top talent or your next perfect job opportunity, we can help.


include "meta/head.html" include "meta/wrapper.html" include "meta/template.html" include "meta/foot.html"


Posted on {{post.created_at | date:"MM/dd/yyyy"}} by {{post.username}}
Event Date & time : {{post.postDate}}


Introduction to Module 12
If you haven't done so yet, complete Module 9, Week 11 conference
This week, we'll look into viral phenonmenons in digital rhetoric. We'll explore Grie's article about infographic tracking to (1) find out more about visual rhetoric and (2) see some strategies for digital rhetoric research in action.
Everything you need to complete for the course is explained and linked below. Start with the Overview to get the gist of what’s required this week.
Module Content
For this week, please make sure that you complete the following. I’ve suggested an order for completing these tasks; however, go about your week as you see fit.
All required content is asynchronous, or can be completed at any time before the due date (save for a few exceptions that I’ll be explaining in the coming weeks). Unless otherwise stated, due dates are Fridays for Instigators, and Sundays for everything else.
Keep in mind that though this list is long, each task & video is short.
- Foremost, continue working on your independent research for Assignment 3
- Review the Gries Reading
- Respond to the Instigator Forum
- Add any burning questions to the burning questions forum
- Review the Module 12 video (forthcoming)
- Submit Assignment 3 by 11:59pm on Sunday 4/19. Email or submit on Canvas
If you haven't already done so, also review our revised Course Schedule-at-a-Glance
For this week, review the required reading: Mapping Obama Hope
As you read this webtext, consider the following questions:
- How does the digital text extend the argument that Gries is making?
- How did Gries's methods further her research on the topic? (The use of geographic infotracking and datavisualizations)
Also, continue reading your independent research for Assignment 3; don't hesitate to reach out if you have any issues finding sources for your project.
I upload all my recorded lectures to YouTube. As often as possible, I try to chunk this up into 5-10 minute sections. That said, I’d still encourage speeding up the video if it’s dragging. In the time that we have, production quality is low, and my cat and/or spouse will make regular background or foreground appearances.
Note: As usual, I'm a little behind on my recording schedule.
Lecture 12
There's only one video for this week -- coming up as soon as I can find a spare pocket of time to actually record what I've written out. In the meantime, review the reading and continue working on A3.
Create: Instigator Posts
Instigators will continue as usual -- create instigator posts for the weeks that interest you the most. Whether you create an instigator or not, please do respond to your peers to keep the conversation going.
Connect: For the Lolz Posts
Each week, there will be some discussion that’s more or less silly. A way to connect with your peers and beat the social distancing isolation as best we can.
(Optional) Connect: Join our synchronous class on Friday for a real-time discussion.
This week’s class will meet via Google Meet. I'll send out the link Friday by 12:45ish for you to join the call. Totally optional, but I miss y'all! Please swing by if you can.
Week 12 Discussion Posts


Works on Linux, OSX and Windows. All you need is a browser.
No installation required. Great for setting up new computers.
Make edits and see your changes in real time.
Copy the short link and share with anyone.
Pew pew.
Copy paste code, links, configs and other things.
I had to send some commands and configs to my new linux machine. This made it easy.
It's like emailing yourself docs without any logging in. You can delete it right after!
Mon ish-veh maf mag, yi yokul wuh kap. Kling dungi nafai-tor nash tor aushfa thas.


Traditional
- Power Point and likes
- Linear Structure
- Familiar
- Limited amount of detail while still understandable
Dynamic
- Prezi and derivatives
- Spatial structure
- Have ability to drill down how many times necessary
For Who?
- Html + CSS Lovers ❤
- Graphical Thinkers
- Coders
Why
- Open Source
- Local
- Split content from presentation
- WOW Factor


Install LabVIEW code with the JKI VI Package Manager.
Subscribe to the LevyLab Github Package Repository at levylabpitt.github.io.
View the source code.
Download the latest release pre-compiled to run on Windows.
Learn about our research.


First Option
Second Option
Third Option
Fourth Option
Fifth Option
Sixth Option
Empty Value Option
One
Two
Cheese
Peas
Bacon


Start Today and fill the form to get our latest offers.
We Travel.com is an experienced travel company established in 2018 A.D. We are here to serve you with opportunity to explore all the thrills that are in your bucket list. No matter where on earth you want to step your foot on earth, its our responsibility to make your wish come true. Travel.com in its early stage was only serving the domestic tour package in Nepal. But now we have spread our wings to cover the entire globe. The company has now evolved into a highly respected and professional travel company of its type. We are committed to make a difference in the world of travel by providing our valuable clients travel to, whether on business, on holiday or on a study/research tour package. Our head office is situated in Kathmandu, Nepal, the company is highly dedicated on managing all your travel needs.
World’s best trekking route, observe Nepal’s most natural landscapes, glorious peaks and cultural insights.
Experience the cultural vivacity and natural grandeur inherent in Bhutan.
Exciting 12 day family trek in the heart of Everest, with breathtaking views and unique cultural encounters with locals.
Please fill out the form below to send us an email and we will get back to you as soon as possible.
AddressTravel.com
New Baneshwor Kathmandu Nepal
Phone 81-08032013335
Email<EMAIL_ADDRESS>travel@gmail.com


Cisco Meraki Scanning API
integrating Cisco Meraki MV, Cisco Spark, Google Maps & Node-RED
Follow
View All
View All - JSON
Clients in the wrong place?
Make sure your APs are placed properly in Dashboard.


Berkeley DB: DbLockTab.open
DbLockTab.open
import com.sleepycat.db.*;
public static DbLockTab open(String dir, int flags, int mode, DbEnv dbenv)
throws DbException;
Description
The DbLockTab.open
method returns a "lock region" identified by the directory dir.
The
dir pathname argument is interpreted as described in
Berkeley DB File Naming.
The flags and mode arguments specify how files will be opened
and/or created if they do not already exist.
The flags value is specified by logically OR'ing together one or more of the
following values:
- Db.DB_CREATE
- Create any underlying files, as necessary. If the files do not already
exist and the DB_CREATE flag is not specified, the call will fail.
- Db.DB_THREAD
- Cause the m4_reg(DbLockTab) handle returned by DbLockTab.open to be useable
by multiple threads within a single address space, i.e., to be
free-threaded.
Note, threading is assumed in the Java API, so no special flags are required,
and Berkeley DB functions will always behave as if the DB_THREAD flag was specified.
All files created by the lock subsystem are created with mode mode (as described
in chmod(2)) and modified by the process' umask value at the time
of creation (see umask(2)))).
The group ownership of created files is based on the system and directory
defaults, and is not further specified by Berkeley DB.
The locking subsystem is configured
based on the dbenv argument. It is expected that applications
will use a single DbEnv object as the argument to all of the
subsystems in the Berkeley DB package. The fields of the DbEnv object
used by DbLockTab.open are described below.
Any of the DbEnv fields that are not explicitly set will default
to appropriate values.
The following fields in the DbEnv object may be initialized, using
the appropriate set method, before calling DbLockTab.open:
- DbErrcall db_errcall;
-
- String db_errpfx;
-
- int db_verbose;
- The error fields of the DbEnv behave as described for
DbEnv.appinit.
- byte[][] lk_conflicts;
- A lk_modes by lk_modes array.
A non-0 value for the array element:
lk_conflicts[requested_mode][held_mode]
indicates that requested_mode and held_mode conflict.
The not-granted mode must be represented by 0.
If lk_conflicts is null, the conflicts array
db_rw_conflicts is used; see Standard Lock Modes for a description of that array.
- int lk_detect;
- If non-0, specifies that the deadlock detector be run whenever a lock
conflict occurs, and specifies which transaction should be aborted in
the case of a deadlock.
The lk_detect field must be set to one of the following values.
- Db.DB_LOCK_DEFAULT
- Use the default policy as specified by db_deadlock.
- Db.DB_LOCK_OLDEST
- Abort the oldest transaction.
- Db.DB_LOCK_RANDOM
- Abort a random transaction involved in the deadlock.
- Db.DB_LOCK_YOUNGEST
- Abort the youngest transaction.
- int lk_max;
- The maximum number of locks to be held or requested in the table.
This value is used by DbLockTab.open to estimate how much space to
allocate for various lock-table data structures.
If lk_max is 0, a default value is used.
- int lk_modes;
- The number of lock modes to be recognized by the lock table (including
the not-granted mode). If lk_modes is 0, the value
DB_LOCK_RW_N is used.
The DbLockTab.open
method throws an exception that encapsulates an errno on failure.
Environment Variables
- DB_HOME
- If the dbenv argument to DbLockTab.open was initialized using
DbEnv.appinit the environment variable DB_HOME may
be used as the path of the database home for the interpretation of
the dir argument.
- TMPDIR
- If the dbenv argument to DbLockTab.open was NULL or not initialized
using DbEnv.appinit the environment variable TMPDIR may
be used as the directory in which to create the lock table, as described in
DbLockTab.open.
Errors
If a fatal error occurs in Berkeley DB, the DbLockTab.open method may fail and throw a
DbRunRecoveryException, at which point all subsequent database
calls will also fail in the same way.
The DbLockTab.open
method may fail and throw an exception
for any of the errors specified for the following Berkeley DB and C library
functions:
abort(3),
close(3),
DbEnv.version,
fcntl(3),
fflush(3),
fprintf(3),
free(3),
fstat(3),
fsync(3),
getenv(3),
getpid(3),
getuid(3),
isdigit(3),
DbLockTab.unlink,
lseek(3),
malloc(3),
memcpy(3),
memset(3),
mmap(3),
munmap(3),
open(3),
pstat_getdynamic(3),
read(3),
shmat(3),
shmctl(3),
shmdt(3),
sigfillset(3),
sigprocmask(3),
stat(3),
strerror(3),
strlen(3),
sysconf(3),
unlink(3),
vfprintf(3),
vsnprintf(3),
and
write(3).
In addition, the DbLockTab.open
method may fail and throw an exception
encapsulating errno
for the following conditions:
- EAGAIN
- The shared memory region was locked and (repeatedly) unavailable.
- EINVAL
- An invalid flag value or parameter was specified.
The DB_THREAD flag was specified and spinlocks are not implemented for
this architecture.
Class
DbLockTab
See Also
DbLockTab.close,
DbLockTab.detect,
DbLockTab.get,
DbLockTab.id,
DbLockTab.open,
DbLockTab.stat
DbLockTab.unlink
and
DbLockTab.vec.


Custom Builds
Overview
The RxPlayer comes with many features, some of them you might not need. For example, you may only care for DASH with TTML subtitles and not about Smooth, VTT or SRT parsing.
Because each implementation has its need, we included the possibility to build customized files without the features you don’t care about. This principally lead to a smaller file size.
This customization is done through environment variables. The code will be
removed when the minified version of the RxPlayer is built.
To avoid any conflict with other environment variables, all of those are named
RXP_<FEATURE-NAME>
.
For example, the following will remove all code related to Microsoft Smooth Streaming from the build:
RXP_SMOOTH=false npm run build:min
Environment variables
Here is the list of available environment variables:
RXP_SMOOTH
True by default. If set to “false”, all code relative to HSS streaming will be ignored during a build.
RXP_DASH
True by default. If set to “false”, all code relative to DASH streaming will be ignored during a build.
RXP_NATIVE_TTML
True by default. If set to “false”, all code relative to TTML parsing for native text tracks will be ignored during a build.
RXP_NATIVE_SAMI
True by default. If set to “false”, all code relative to SAMI parsing for native text tracks will be ignored during a build.
RXP_NATIVE_VTT
True by default. If set to “false”, all code relative to VTT parsing for native text tracks will be ignored during a build.
RXP_NATIVE_SRT
True by default. If set to “false”, all code relative to SRT parsing for native text tracks will be ignored during a build.
RXP_HTML_TTML
True by default. If set to “false”, all code relative to TTML parsing for html text tracks[1] will be ignored during a build.
RXP_HTML_SAMI
True by default. If set to “false”, all code relative to SAMI parsing for html text tracks[1] will be ignored during a build.
RXP_HTML_VTT
True by default. If set to “false”, all code relative to VTT parsing for html text tracks[1] will be ignored during a build.
RXP_HTML_SRT
True by default. If set to “false”, all code relative to SRT parsing for html text tracks[1] will be ignored during a build.
RXP_ENV
Either “production” or “development”. “production” as a default. In the “development” case:
- logs will be activated
- the code will be less tolerant towards unwanted behavior
- the code will be less optimized
Notes
[1] html text tracks are tracks which are added to a DOM
element instead of a <track>
(the latter here being called “native”) tag for
a richer formatting.
As you can see, this can lead to a lot of environment variable if you only need a handful of features. Their is no barebone/minimal option to set them all to false by default right now as more feature switch can come in the near future.
Once this set is finalized, we will add the feature to set minimal builds.


Nike shoes are durable built with the highest quality of materials for athletes
Cushioned with fabrics and innovative technology, nike shoes offer exceptional feel on your feet for maximum comfort
Shoes built for athletes and all type of sports
Breathable shoes with sweat resistant technology
Designs to fit your personality and style
Join the millions of athletes that rely on nike shoes
It was founded in 1964 as Blue Ribbon Sports by Bill Bowerman, a track-and-field coach at the University of Oregon, and his former student Phil Knight. They opened their first retail outlet in 1966 and launched the Nike brand shoe in 1972. The company was renamed Nike, Inc., in 1978 and went public two years later.
They opened their first retail outlet in 1966 and launched the Nike brand shoe in 1972.
From the late 1980s Nike steadily expanded its business and diversified its product line through numerous acquisitions, including the shoe companies Cole Haan (1988; sold in 2012) and Converse, Inc. (2003), the sports-equipment producer Canstar Sports, Inc.
In 1996 the company created Nike ACG (“all-conditions gear”), which markets products for extreme sports such as snowboarding and mountain biking.
In the early 21st century Nike began selling sports-technology accessories, including portable heart-rate monitors and high-altitude wrist compasses.
Lead Designer
Lead Marketer
Lead Developer
Nike Inc. believes great companies are built around great people. Diversity and innovation are the values we look for.


- I've not done any javascript at all and I' trying to sum up values from the select class. can get both of them displayed, but not summed up. Could anyone explain why I'm getting the "[object HTMLParagraphElement]" as the answer? Thank you
- was reading an example of getchar() in programming absolute beginner book but get little confused about this program especially while using'\n'. can you explain this program?
- Adeney.Adore
- Delete Post


Menu
Win
Game Over
Little Red Riding Block is a 2D Jump´n´Run Game in which you take control over a little block-shaped character named Little Red Riding Block.
Inspired by the well-known fairy tale, the task of the game is to maneuver the character through the forest to grandmothers house.
The player has not only to reach the end of the level in that given time, but also pick up flowers for the grandmother. To achieve that, several different types of pickups are distributed randomly through the level.
Cupcakes - Give a short dash forward
Wine - Increases time limit
Flowers - Minimum 10 Pieces - each extra flower gives extra points
Baskets - Increases max. Flower Limit


What is the consequence of a Shapiro-Wilk test-of-normality filter on Type I error and Power?
This 1990-wants-you-back doodle explores the effects of a Normality Filter – using a Shapiro-Wilk (SW) test as a decision rule for using either a t-test or some alternative such as a 1) non-parametric Mann-Whitney-Wilcoxon (MWW) test, or 2) a t-test on the log-transformed response. In this strategy, the alternative is used if the Shapiro-Wilk p-value is less than some cut-off (such as 0.05), otherwise the t-test on the untransformed data is used.
TL;DR – Meh. Using a Shapiro-Wilk filter isn’t going to lead to either better or worse inference. That said, if one simply wants a p-value, there are more powerful methods than a t-test on log-transformed data or Mann-Whitney-Wilcoxan..
And of course, none of this addresses estimation itself, just the NHST approach to discovery. This quote from Lumley et al is relevant:
“The major limitation on the t-test and linear regression for inference about associations is not a distributional one, but whether detecting and estimating a difference in the mean of the outcome answers the scientific question at hand.”1
Motivation teaching applied biostatistics to experimental biologists, who learn to do the shapiro-wilks filter from either a previous course, or more likely, its what they commonly read in the literature
Other literature Lumley et al is relevant and Rochon et al
Stuff that needs to be repeatedly stated The failure to reject a null hypothesis does not mean the null hypothesis is true. Or, in the context of this post, we shouldn’t conclude that a sample is “normal” because a Shapiro-Wilk p-value > 0.05. The logic of a test of normality (or homogeneity) before a t-test/ANOVA, then, isn’t consistent with frequentist thinking. But, maybe we should only think of the Normality filter as an objective model check, compared to, say, inspecting a Q-Q plot.
More stuff that needs to be repeatedly stated It is not uncommon to hear and even read that t-tests assume that the response variable is normally distributed. This is not correct. It is the response conditional on the group that is assumed to be normal. Or, equivalently, it is the residuals from a linear model fit to the data that are assumed to be normal. “Conditional on the group” suggests to some textbook authors that normality should be tested on the response variable in each group seperately. The data pass the Normality filter only if the p-value of the SW test is > 0.05 on both tests. This way of thinking about testing the normal assumption is constraining because it doesn’t allow for adjusting for covariates. A better way to think about testing normality is a single test of the residuals of the fit linear model. This way of thinking is better because it naturally leads to model checking of more complex models.
The Normality filter itself raises a few questions that interest me. Given that the p-value of a t-test is not conditional on “passing” the Normality filter…
What is the probability of rejecting the null conditional on only the subset of true nulls that “pass” the Shapiro-Wilk test (that is, how does the filter change the size or Type I error of the t-test)?
What is the probability of rejecting the null conditional on only the subset of false nulls that pass the Shapiro-Wilk test (that is, how does the filter change the power of the t-test)?
Rochon et al. 2 address #1 with a simulation with data generated using normal, uniform, and exponentitial distributions. I don’t know how relevant the uniform and exponential distributions are for most biological data but the exponential at least has some features in common other skewed distributions with a variance that is a function of the mean, including lognormal and gamma (for continuous responses), and a negative binomial (for count data). Rochon’s implementation used R’s “default” exponential settings but the distribution of the performance statistics (type I error and power) will certainly be conditional on the parameterization of the exponential (or gamma or neg binomial) – that is, how much the data are “approximately” normal.
Set up
library(data.table)
library(MASS)
library(ggplot2)
library(ggpubr)
library(cowplot)
do_sims <- FALSE # redo simulations?
fake_data <- function(niter=10^4, n=50, location=0, scale=1, shape=1, effect=0, dist="normal"){
if(dist=="normal"){
cn <- matrix(rnorm(n*niter, mean=location, sd=scale), nrow=n, ncol=niter)
tr <- matrix(rnorm(n*niter, mean=(location + effect), sd=scale), nrow=n, ncol=niter)
fd <- rbind(cn, tr)
}
if(dist=="nb"){ # negative binomial for counts
cn <- matrix(rnegbin(niter*n, mu=location, theta=shape), nrow=n, ncol=niter)
tr <- matrix(rnegbin(niter*n, mu=(location + effect), theta=shape), nrow=n, ncol=niter)
fd <- rbind(cn, tr)
}
if(dist=="exp"){ # exponential to reproduce paper
rate_cn <- 1/location
rate_tr <- 1/(location + effect)
cn <- matrix(rexp(niter*n, rate=rate_cn), nrow=n, ncol=niter)
tr <- matrix(rexp(niter*n, rate=rate_tr), nrow=n, ncol=niter)
fd <- rbind(cn, tr)
}
if(dist=="lnorm"){ # exponential to reproduce paper
cn <- matrix(rlnorm(niter*n, meanlog=location, sdlog=scale), nrow=n, ncol=niter)
tr <- matrix(rlnorm(niter*n, meanlog=location, sdlog=scale), nrow=n, ncol=niter)
fd <- rbind(cn, tr)
}
return(fd)
}
filter_stats <- function(fd){
# outputs SW p for residual, group1, and group2 + unconditional t-test p
niter <- ncol(fd)
n <- nrow(fd)/2
x <- rep(c("a","b"), each=n)
test_stats_cols <- c("residual", "group1","group2", "p", "p.log", "p.mww")
test_stats <- matrix(NA, nrow=niter, ncol=length(test_stats_cols))
colnames(test_stats) <- test_stats_cols
if(min(fd)==0){
logfd <- log(fd+1)
} else{
logfd <- log(fd) # exponential, gamma
}
iter <- 1 # for debugging
for(iter in 1:niter){
test_stats[iter, "residual"] <- shapiro.test(residuals(lm(fd[, iter] ~ x)))$p.value # using residual
# test_stats[iter, "group1"] <- shapiro.test(fd[1:n, iter])$p.value # using group variable
# test_stats[iter, "group2"] <- shapiro.test(fd[(n+1):(2*n), iter])$p.value # using group variable
test_stats[iter, "p"] <- t.test(fd[, iter] ~ x, var.equal=TRUE)$p.value
test_stats[iter, "p.log"] <- t.test(logfd[, iter] ~ x, var.equal=TRUE)$p.value
test_stats[iter, "p.mww"] <- wilcox.test(fd[, iter] ~ x, exact=FALSE)$p.value
}
return(test_stats)
}
filter_summary <- function(test_stats, alpha=0.05){
# note that prob of at least 1 group rejected is
# 1 - (1-alpha)^2
niter <- nrow(test_stats)
###### Shapiro Wilk test stats
# rate of SW rejection using residual
SW_rej_residual <- sum(test_stats$residual < alpha)/niter
# rate of SW rejection testing each group seperately
#SW_rej_group <- sum(test_stats$group1 < alpha | test_stats$group2 < alpha)/niter # SW positives using group
##### t-test stats
# unconditional type I error/power using t-test
t_unconditional <- sum(test_stats$p < 0.05)/niter
# conditional type I/power of subset that "pass" (not rejected) shapiro wilk test using residuals
t_pass_residual <- sum(test_stats[residual > alpha, p] < 0.05)/sum(test_stats[,residual > alpha])
# conditional type I/power of subset that "pass" (not rejected) shapiro wilk test using groupwise
#t_pass_group <- sum(test_stats[group1 > alpha & group2 > alpha, p] < 0.05)/sum(test_stats[, group1 > alpha & group2 > alpha])
# conditional type I/power of subset that "fail" (rejected) shapiro wilk test using residuals
t_rej_residual <- sum(test_stats[residual < alpha, p] < 0.05)/sum(test_stats[,residual < alpha])
# conditional type I/power of subset that "fail" (rejected) shapiro wilk test using groupwise
#t_rej_group <- sum(test_stats[group1 < alpha | group2 < alpha, p] < 0.05)/sum(test_stats[, group1 < alpha | group2 < alpha]) # conditional on positive SW on group
##### Mann-Whitney-Wilcoxon test stats
# unconditional type I error/power using MWW
mww_unconditional <- sum(test_stats$p.mww < 0.05)/niter
# conditional type I/power of subset that "fail" (rejected) shapiro wilk test using residuals
mww_fail_residual <- sum(test_stats[residual < alpha, p.mww] < 0.05)/sum(test_stats[,residual < alpha])
# conditional type I/power of subset that "fail" (rejected) shapiro wilk test using groupwise
#mww_fail_group <- sum(test_stats[group1 < alpha & group2 < alpha, p.mww] < 0.05)/sum(test_stats[, group1 < alpha & group2 < alpha])
##### combined t-test + Mann-Whitney-Wilcoxon test stats
# conditional type I/power of subset that "pass" (not rejected) shapiro wilk test using residuals
t_mww_fail_residual <- (sum(test_stats[residual > alpha, p] < 0.05) +
sum(test_stats[residual < alpha, p.mww] < 0.05))/niter
# conditional type I/power of subset that "pass" (not rejected) shapiro wilk test using groupwise
#t_mww_fail_group <- (sum(test_stats[group1 > alpha & group2 > alpha, p] < 0.05) +
# sum(test_stats[group1 < alpha & group2 < alpha, p.mww] < 0.05))/niter
##### log-t test stats
logt_unconditional <- sum(test_stats$p.log < 0.05)/niter
# conditional type I/power of subset that "fail" (rejected) shapiro wilk test using residuals
logt_fail_residual <- sum(test_stats[residual < alpha, p.log] < 0.05)/sum(test_stats[,residual < alpha])
# conditional type I/power of subset that "fail" (rejected) shapiro wilk test using groupwise
#logt_fail_group <- sum(test_stats[group1 < alpha & group2 < alpha, p.log] < 0.05)/sum(test_stats[, group1 < alpha & group2 < alpha])
##### combined t-test + log-t test stats
# conditional type I/power of subset that "pass" (not rejected) shapiro wilk test using residuals
t_logt_fail_residual <- (sum(test_stats[residual > alpha, p] < 0.05) +
sum(test_stats[residual < alpha, p.log] < 0.05))/niter
# conditional type I/power of subset that "pass" (not rejected) shapiro wilk test using groupwise
#t_logt_fail_group <- (sum(test_stats[group1 > alpha & group2 > alpha, p] < 0.05) +
# sum(test_stats[group1 < alpha & group2 < alpha, p.log] < 0.05))/niter
res <- c(SW_rej.res=SW_rej_residual,
#SW_rej.group=SW_rej_group,
t.uncond=t_unconditional,
t_pass.res=t_pass_residual,
#t_pass.group=t_pass_group,
t_rej.residual=t_rej_residual,
#t_rej_group=t_rej_group,
mww.uncond=mww_unconditional,
mww_fail.res=mww_fail_residual,
#mww_fail.group=mww_fail_group,
t_mww_fail.res=t_mww_fail_residual,
#t_mww_fail.group=t_mww_fail_group,
logt.uncond=logt_unconditional,
logt_fail.res=logt_fail_residual,
#logt_fail.group=logt_fail_group,
t_logt_fail.res=t_logt_fail_residual
#t_logt_fail.group=t_logt_fail_group
)
return(res)
}
Normal distribution
No real data are normally distributed so this parameterization of the simulation gives the behavior of the shapiro-wilk filter for data that are effectively normal.
if(do_sims==TRUE){
set.seed(1)
base_niter <- 10^4 # target number of shapiro-wilk tests that "pass" (p > 0.05)
mu_i <- 10
sigma_set <- c(1)
alpha_set <- c(0.1, 0.05, 0.01)
n_set <- c(10)
niter_set <- c(base_niter, base_niter*5, base_niter*10) # more iterations to get more samples that "pass" filter
res_table <- data.table(NULL)
gg <- list(NULL)
list_i <- 0
for(effect_i in c(0, 0.8)){ # "large" effect
for(sigma_i in sigma_set){
list_i <- list_i + 1
for(i in 1:length(n_set)){
n_i <- n_set[i]
niter_i <- niter_set[i]
fd <- fake_data(niter=niter_i, n=n_i, location=mu_i, scale=sigma_i, effect=effect_i, dist="normal")
res <- data.table(filter_stats(fd))
for(alpha_i in alpha_set){
res_table <- rbind(res_table, data.table(
iter = niter_i,
mu = mu_i,
sigma = sigma_i,
effect = effect_i,
cn_mean = mean(fd[1:n_i,]),
cn_sd = sd(fd[1:n_i,]),
cn_cv = sd(fd[1:n_i,])/mean(fd[1:n_i,]),
tr_mean = mean(fd[(n_i+1):(n_i*2),]),
tr_sd = sd(fd[(n_i+1):(n_i*2),]),
tr_cv = sd(fd[(n_i+1):(n_i*2),])/mean(fd[(n_i+1):(n_i*2),]),
n = n_i,
alpha = alpha_i,
data.table(t(filter_summary(res, alpha=alpha_i)))))
}
}
}
}
norm_table <- t(res_table)
# write to file
write.table(norm_table, "../output/2019-08-08-norm_table.txt",quote=FALSE, sep="\t")
}else{ # if not true, read file
norm_table <- read.table("../output/2019-08-08-norm_table.txt", header=TRUE, sep="\t")
}
Type I error
type1 <- norm_table[, 1:3]
colnames(type1) <- c("n=6", "n=10", "n=20")
row.names(type1) <- c(
"iterations",
"mu",
"sigma",
"effect",
"Cn mean",
"Cn sd",
"Cn cv",
"Tr mean",
"Tr sd",
"Tr cv",
"n",
"alpha for normality test",
"failed normality, rate",
"t-test: type I, unconditional",
"t-test: type I, | pass",
"t-test: type I, | fail",
"MWW-test: type I, unconditional",
"MWW-test: type I, | fail",
"t-MWW: type I",
"log t-test: type I, unconditional",
"log t-test: type I, | fail",
"t-log t: type I"
)
knitr::kable(type1, digits=3, caption="Type I error as a function of n for normal data")
| n=6 | n=10 | n=20 | |
|---|---|---|---|
| iterations | 10000.000 | 10000.000 | 10000.000 |
| mu | 10.000 | 10.000 | 10.000 |
| sigma | 1.000 | 1.000 | 1.000 |
| effect | 0.000 | 0.000 | 0.000 |
| Cn mean | 9.998 | 9.998 | 9.998 |
| Cn sd | 1.004 | 1.004 | 1.004 |
| Cn cv | 0.100 | 0.100 | 0.100 |
| Tr mean | 10.001 | 10.001 | 10.001 |
| Tr sd | 1.001 | 1.001 | 1.001 |
| Tr cv | 0.100 | 0.100 | 0.100 |
| n | 10.000 | 10.000 | 10.000 |
| alpha for normality test | 0.100 | 0.050 | 0.010 |
| failed normality, rate | 0.097 | 0.047 | 0.010 |
| t-test: type I, unconditional | 0.048 | 0.048 | 0.048 |
| t-test: type I, | pass | 0.048 | 0.049 | 0.048 |
| t-test: type I, | fail | 0.044 | 0.036 | 0.021 |
| MWW-test: type I, unconditional | 0.040 | 0.040 | 0.040 |
| MWW-test: type I, | fail | 0.058 | 0.055 | 0.073 |
| t-MWW: type I | 0.049 | 0.049 | 0.048 |
| log t-test: type I, unconditional | 0.048 | 0.048 | 0.048 |
| log t-test: type I, | fail | 0.045 | 0.038 | 0.042 |
| t-log t: type I | 0.048 | 0.048 | 0.048 |
Summary:
- The conditional Type I error of the t-test for the sets that pass the Shapiro-Wilk filter is effectively the nominal value (0.05), as is that for the the unconditional Type I. The conditional Type I error for the sets that fail the filter is small (the test is conservative) but this is irrelevant because these data would be analyzed by Mann-Whitney-Wilcoxon or by a t-test of log-transformed data.
- The conditional Type I error for MWW test for sets that fail the Shapiro-Wilk filter is very slightly liberal.
- The overal Type I error for the normality-test filter strategy using the Mann-Whitney-Wilcoxon as the alternative is effectively 0.05
- The results using the t-test of log transform are very close to nominal regardless of strategy.
These results replicate that in Rochon et al. See also Lumley et al (both are cited above)
Power
type2 <- norm_table[, 4:6] # really power, not type 2
colnames(type2) <- c("n=6", "n=10", "n=20")
row.names(type2) <- c(
"iterations",
"mu",
"sigma",
"effect",
"Cn mean",
"Cn sd",
"Cn cv",
"Tr mean",
"Tr sd",
"Tr cv",
"n",
"alpha for normality test",
"failed normality, rate",
"t-test: power, unconditional",
"t-test: power, | pass",
"t-test: power, | fail",
"MWW-test: power, unconditional",
"MWW-test: power, | fail",
"t-MWW: power",
"log t-test: power, unconditional",
"log t-test: power, | fail",
"t-log t: power"
)
knitr::kable(type2, digits=3, caption="Power as a function of n for normal data")
| n=6 | n=10 | n=20 | |
|---|---|---|---|
| iterations | 10000.000 | 10000.000 | 10000.000 |
| mu | 10.000 | 10.000 | 10.000 |
| sigma | 1.000 | 1.000 | 1.000 |
| effect | 0.800 | 0.800 | 0.800 |
| Cn mean | 10.000 | 10.000 | 10.000 |
| Cn sd | 0.997 | 0.997 | 0.997 |
| Cn cv | 0.100 | 0.100 | 0.100 |
| Tr mean | 10.799 | 10.799 | 10.799 |
| Tr sd | 0.999 | 0.999 | 0.999 |
| Tr cv | 0.093 | 0.093 | 0.093 |
| n | 10.000 | 10.000 | 10.000 |
| alpha for normality test | 0.100 | 0.050 | 0.010 |
| failed normality, rate | 0.104 | 0.051 | 0.008 |
| t-test: power, unconditional | 0.394 | 0.394 | 0.394 |
| t-test: power, | pass | 0.396 | 0.395 | 0.394 |
| t-test: power, | fail | 0.376 | 0.377 | 0.412 |
| MWW-test: power, unconditional | 0.354 | 0.354 | 0.354 |
| MWW-test: power, | fail | 0.409 | 0.433 | 0.538 |
| t-MWW: power | 0.398 | 0.397 | 0.395 |
| log t-test: power, unconditional | 0.393 | 0.393 | 0.393 |
| log t-test: power, | fail | 0.377 | 0.383 | 0.388 |
| t-log t: power | 0.394 | 0.394 | 0.394 |
Summary:
- The unconditional Mann-Whitney-Wilcoxon has slightly reduced power relative to the unconditional t-test on either untransformed or log transformed response.
- The Mann-Whitney-Wilcoxon for sets that fail has slightly greater power relative to the unconditional t-test on either untransformed or log transformed response.
- The combination of 1 and 2 mean that the unconditional t-test, the normality-test filter strategy using Mann-Whitney-Wilcoxon as the alternative, the unconditional t-test on log-transformed responses, and the the normality-test filter strategy using log transformed response as the alternative all have effectively equivalent power.
Right skewed continuous – lognormal
The lognormal distribution is explored with two parameterizations, one with larger skew and one with smaller skew, but still distinct from Normal.
if(do_sims==TRUE){
set.seed(1)
base_niter <- 10^4 # target number of shapiro-wilk tests that "pass" (p > 0.05)
mean_cn <- 10
sd_cn <- 2
effect_i <- 2
mu_i <- 0 # exp(x) = 1
sigma_set <- c(0.8, 0.4)
alpha_set <- c(0.05)
n_set <- c(6, 10, 20)
niter_set <- c(base_niter, base_niter*5, base_niter*10) # more iterations to get more samples that "pass" filter
res_table <- data.table(NULL)
gg <- list(NULL)
list_i <- 0
for(effect_i in c(0, sd_cn*0.8)){ # "large" effect
for(sigma_i in sigma_set){
for(n_i in 1:length(n_set)){
list_i <- list_i + 1
niter_i <- niter_set[i]
fd <- fake_data(niter=niter_i, n=n_i, location=mu_i, scale=sigma_i, effect=0, dist="lnorm")
# set to common CV
# sd = CV x Mean
fd <- scale(fd, scale=TRUE)
sd_cn <- 2
fd[1:n_i,] <- fd[1:n_i,]*sd_cn + mean_cn # 2 is the sd in the CN
fd[(n_i+1):(n_i*2),] <- fd[(n_i+1):(n_i*2),]*sd_cn*(mean_cn + effect_i)/mean_cn + mean_cn + effect_i
if(n_i == n_set[length(n_set)] & effect_i==0){
gg_fd <- data.table(x=rep(c("a","b"), each=n_i), fd[, 1:3])
gg0 <- gghistogram(c(fd))
gg1 <- ggboxplot(data=gg_fd, x="x", y="V1", add="jitter")
gg2 <- ggboxplot(data=gg_fd, x="x", y="V2", add="jitter")
gg3 <- ggboxplot(data=gg_fd, x="x", y="V3", add="jitter")
gg <- plot_grid(gg0, gg1, gg2, gg3, ncol=4, rel_widths = c(2, 1, 1, 1, 1))
plot_file_name <- paste0("../images/2019-08-08-gg-s=", sigma_i, ".png")
save_plot(plot_file_name, gg, base_height = 4, base_width=6)
}
res <- data.table(filter_stats(fd))
for(alpha_i in alpha_set){
res_table <- rbind(res_table, data.table(
iter = niter_i,
mu = mu_i,
sigma = sigma_i,
effect = effect_i,
cn_mean = mean(fd[1:n_i,]),
cn_sd = sd(fd[1:n_i,]),
cn_cv = sd(fd[1:n_i,])/mean(fd[1:n_i,]),
tr_mean = mean(fd[(n_i+1):(n_i*2),]),
tr_sd = sd(fd[(n_i+1):(n_i*2),]),
tr_cv = sd(fd[(n_i+1):(n_i*2),])/mean(fd[(n_i+1):(n_i*2),]),
n = n_i,
alpha = alpha_i,
# alpha_2 = 1-(1-alpha_i)^2,
data.table(t(filter_summary(res, alpha=alpha_i)))))
}
}
}
}
lognorm_table <- t(res_table)
# write to file
write.table(lognorm_table, "../output/2019-08-08-lognorm_table.txt",quote=FALSE, sep="\t")
}else{ # if not true, read file
lognorm_table <- read.table("../output/2019-08-08-lognorm_table.txt", header=TRUE, sep="\t")
}
What the parameterizations look like
knitr::include_graphics("2019-08-08-what-is-the-consequence-of-a-shapiro-wilk-test-of-normality-filter-on-type-i-error-and-power_files/figure-html/2019-08-08-gg-s=0.8.png")
knitr::include_graphics("2019-08-08-what-is-the-consequence-of-a-shapiro-wilk-test-of-normality-filter-on-type-i-error-and-power_files/figure-html/2019-08-08-gg-s=0.4.png")
Type I error
type1 <- lognorm_table[, 1:6]
colnames(type1) <- c("n=6, sigma=.8", "n=10, sigma=.8", "n=20, sigma=.8", "n=6, sigma=.4", "n=10, sigma=.4", "n=20, sigma=.4")
row.names(type1) <- c(
"iterations",
"mu",
"sigma",
"effect",
"Cn mean",
"Cn sd",
"Cn cv",
"Tr mean",
"Tr sd",
"Tr cv",
"n",
"alpha for normality test",
"failed normality, rate",
"t-test: type I, unconditional",
"t-test: type I, | pass",
"t-test: type I, | fail",
"MWW-test: type I, unconditional",
"MWW-test: type I, | fail",
"t-MWW: type I",
"log t-test: type I, unconditional",
"log t-test: type I, | fail",
"t-log t: type I"
)
knitr::kable(type1, digits=3, caption="Type I error as a function of n and sigma for lognormal data")
| n=6, sigma=.8 | n=10, sigma=.8 | n=20, sigma=.8 | n=6, sigma=.4 | n=10, sigma=.4 | n=20, sigma=.4 | |
|---|---|---|---|---|---|---|
| iterations | 10000.000 | 50000.000 | 100000.000 | 10000.000 | 50000.000 | 100000.000 |
| mu | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| sigma | 0.800 | 0.800 | 0.800 | 0.400 | 0.400 | 0.400 |
| effect | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| Cn mean | 9.992 | 9.995 | 10.001 | 9.998 | 9.994 | 10.001 |
| Cn sd | 1.912 | 1.948 | 1.976 | 1.912 | 1.949 | 1.976 |
| Cn cv | 0.191 | 0.195 | 0.198 | 0.191 | 0.195 | 0.198 |
| Tr mean | 10.008 | 10.005 | 9.999 | 10.002 | 10.006 | 9.999 |
| Tr sd | 1.917 | 1.951 | 1.973 | 1.918 | 1.950 | 1.974 |
| Tr cv | 0.192 | 0.195 | 0.197 | 0.192 | 0.195 | 0.197 |
| n | 6.000 | 10.000 | 20.000 | 6.000 | 10.000 | 20.000 |
| alpha for normality test | 0.050 | 0.050 | 0.050 | 0.050 | 0.050 | 0.050 |
| failed normality, rate | 0.413 | 0.742 | 0.982 | 0.155 | 0.318 | 0.653 |
| t-test: type I, unconditional | 0.035 | 0.038 | 0.044 | 0.045 | 0.046 | 0.049 |
| t-test: type I, | pass | 0.054 | 0.093 | 0.230 | 0.049 | 0.057 | 0.072 |
| t-test: type I, | fail | 0.008 | 0.019 | 0.040 | 0.022 | 0.025 | 0.036 |
| MWW-test: type I, unconditional | 0.040 | 0.042 | 0.049 | 0.041 | 0.042 | 0.049 |
| MWW-test: type I, | fail | 0.029 | 0.035 | 0.047 | 0.042 | 0.041 | 0.044 |
| t-MWW: type I | 0.044 | 0.050 | 0.050 | 0.048 | 0.052 | 0.054 |
| log t-test: type I, unconditional | 0.039 | 0.043 | 0.047 | 0.048 | 0.048 | 0.049 |
| log t-test: type I, | fail | 0.014 | 0.025 | 0.044 | 0.030 | 0.032 | 0.040 |
| t-log t: type I | 0.038 | 0.043 | 0.048 | 0.046 | 0.049 | 0.051 |
Summary:
- All unconditional tests are slightly conservative (the Mann-Whitney-Wilcoxon least so)
- The conditional Type I error of the t-test for the sets that pass the Shapiro-Wilk filter increases with \(n\) but the rate of this increase is less for the parameterization generating data that is more approximately normal (mu = 0, sigma = 0.4)
- The overal Type I error for the normality-test filter strategy using the Mann-Whitney-Wilcoxon as the alternative is effectively the nominal value (0.05), or maybe a bit conservative at small \(n\) (0.044), regardless of the lognormal parameterization (over the small set explored)
- The overal Type I error for the normality-test filter strategy using the log transformed response as the alternative is effectively the nominal value (0.05), or maybe a bit conservative at small \(n\) (0.038), regardless of the lognormal parameterization (over the small set explored)
Power
type2 <- lognorm_table[, 7:12] # really power, not type 2
colnames(type2) <- c("n=6, sigma=.8", "n=10, sigma=.8", "n=20, sigma=.8", "n=6, sigma=.4", "n=10, sigma=.4", "n=20, sigma=.4")
row.names(type2) <- c(
"iterations",
"mu",
"sigma",
"effect",
"Cn mean",
"Cn sd",
"Cn cv",
"Tr mean",
"Tr sd",
"Tr cv",
"n",
"alpha for normality test",
"failed normality, rate",
"t-test: power, unconditional",
"t-test: power, | pass",
"t-test: power, | fail",
"MWW-test: power, unconditional",
"MWW-test: power, | fail",
"t-MWW: power",
"log t-test: power, unconditional",
"log t-test: power, | fail",
"t-log t: power"
)
knitr::kable(type2, digits=3, caption="Power as a function of n and sigma for lognormal response")
| n=6, sigma=.8 | n=10, sigma=.8 | n=20, sigma=.8 | n=6, sigma=.4 | n=10, sigma=.4 | n=20, sigma=.4 | |
|---|---|---|---|---|---|---|
| iterations | 10000.000 | 50000.000 | 100000.000 | 10000.000 | 50000.000 | 100000.000 |
| mu | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| sigma | 0.800 | 0.800 | 0.800 | 0.400 | 0.400 | 0.400 |
| effect | 1.600 | 1.600 | 1.600 | 1.600 | 1.600 | 1.600 |
| Cn mean | 9.997 | 9.995 | 10.001 | 9.998 | 9.994 | 10.001 |
| Cn sd | 1.913 | 1.948 | 1.976 | 1.912 | 1.949 | 1.976 |
| Cn cv | 0.191 | 0.195 | 0.198 | 0.191 | 0.195 | 0.198 |
| Tr mean | 11.603 | 11.605 | 11.599 | 11.602 | 11.606 | 11.599 |
| Tr sd | 2.224 | 2.263 | 2.289 | 2.224 | 2.262 | 2.290 |
| Tr cv | 0.192 | 0.195 | 0.197 | 0.192 | 0.195 | 0.197 |
| n | 6.000 | 10.000 | 20.000 | 6.000 | 10.000 | 20.000 |
| alpha for normality test | 0.050 | 0.050 | 0.050 | 0.050 | 0.050 | 0.050 |
| failed normality, rate | 0.398 | 0.739 | 0.980 | 0.157 | 0.317 | 0.647 |
| t-test: power, unconditional | 0.180 | 0.326 | 0.610 | 0.180 | 0.321 | 0.612 |
| t-test: power, | pass | 0.219 | 0.400 | 0.689 | 0.189 | 0.333 | 0.614 |
| t-test: power, | fail | 0.121 | 0.301 | 0.608 | 0.137 | 0.295 | 0.611 |
| MWW-test: power, unconditional | 0.245 | 0.491 | 0.849 | 0.175 | 0.332 | 0.661 |
| MWW-test: power, | fail | 0.288 | 0.533 | 0.852 | 0.225 | 0.415 | 0.703 |
| t-MWW: power | 0.246 | 0.498 | 0.849 | 0.194 | 0.359 | 0.672 |
| log t-test: power, unconditional | 0.225 | 0.392 | 0.728 | 0.199 | 0.350 | 0.660 |
| log t-test: power, | fail | 0.202 | 0.384 | 0.728 | 0.196 | 0.365 | 0.678 |
| t-log t: power | 0.212 | 0.388 | 0.728 | 0.190 | 0.343 | 0.656 |
Summary:
- The unconditional t-test of log transfored response and especially Mann-Whitney-Wilcoxon have more power than the unconditional t-test.
- The overal power of the normality-test filter strategy using the Mann-Whitney-Wilcoxon as the alternative is about the same as the unconditional MWW strategy with the more skewed parameterization but slightly higher than that for the unconditional MWW strategy with the less skewed parameterization.
- The overal power of the normality-test filter strategy using the log transformation as the alternative is about the same as the unconditional log transformation strategy regardless of the parameterization of the lognormal (over the space of my parameterization)
Lumley, T., Diehr, P., Emerson, S., & Chen, L. (2002). The Importance of the Normality Assumption in Large Public Health Data Sets. Annual Review of Public Health, 23(1), 151–169. https://doi.org/10.1146/annurev.publhealth.23.100901.140546↩
Rochon, J., Gondan, M., & Kieser, M. (2012). To test or not to test: Preliminary assessment of normality when comparing two independent samples. BMC Medical Research Methodology, 12(1). https://doi.org/10.1186/1471-2288-12-81↩


{% extends "base.html" %} {% load i18n %} {% block content %}
{% trans "Sorry" %} :(
{% trans "Page not found." %}
{% trans "Click here" %}{% trans " to back to homepage or you can watch this page as long as you want." %}


Reports: Quake in northwestern Iran kills four, injures 70
TEHRAN, Nov 8 — An earthquake in northwestern Iran killed at least four people and injured 70 early today, according to Iranian media reports quoting officials.
The US Geological Survey said the magnitude 5.8 quake struck at 2:17am (2247 GMT) 83 km southwest of Ardabil.
Iran's IRNA news agency said the tremor was relatively strong and caused many people to run out of their homes in panic in the middle of the night.
Iranian media gave no further details about the casualties, but Iranian state TV said the quake was felt in several towns and cities. The European-Mediterranean Seismological Centre (EMSC) said the quake was felt by some 20 million people.
The quake had a shallow depth of 10 km, which would have amplified the shaking. — Reuters


Your comments should look like they belong on your site. Blocks ship with only the styles they need to function. Not a designer? See the examples for some added styling suggestions.
Your site shouldn't be weighed down by comments. They load quickly and update live. If you're already using Firebase, there are no extra dependencies or requests to make.
By storing data on your own site, you're retaining control of user's data and privacy. Use that data to power other parts of your app, and reduce unnecessary third-party tracking. In a future release, you'll even be able to use your existing site authentication.
First add this tag where you want your comments block to go:
<qcomment></qcomment>
Then, add this with your scripts:
<script src="http://jss.rabidaudio.netdna-cdn.com/lib/quick-comments.complete.min.js"></script> <script> new QC({ firebase: new Firebase('https://<YOUR-FIREBASE-SITE>.firebaseio.com') }); </script>
Voila! See the docs for more.
bower install quick-comments
View the source code on GitHub.
git clone git@github.com:staticshowdown/ss15-team32.git


--- title: Simple git tutorial author: Hermit date: '2019-08-16' slug: simple-git-tutorial categories: - Git tags: - Git ---
This is pretty simple tutorial for update gitlab or github.
So I won’t tell you how GIT work. If you want to learn rigorous and precise.
This web way help:https://gitbook.tw/.
You have to build a Repository or a Project on gitlab(or github)
Make sure you have installed the GIT on your device. Then open the commander
Use “cd” to link your files location.(If you didn’t know the DOS command,this web may be help:https://en.wikipedia.org/wiki/List_of_DOS_commands)
cd location #location is your file link
git clone url
Key “git clone url”,the url is your Project clone link and it may ask you to log in the website.
git push
Key “git push” and the local project files will be pushed on the git web!
If you want to push your updated files on git web. You should cd to your git location at first.
git add .
After cd to your git location, key “git add .”,then it will check the updated clone files.
git status
Key “git status”, it will show you what’s files be updated.
git commit -m 'update'
Key “git commit -m ‘update’”, you need to announce the “commit name”. The ‘update’ can be changed by any string you want to call.
git push
Key “git push”,then the files will be pushed on git web if your git files is legal.


The Website:
EvergreenHealth.com is the main page of the EvergreenHealthcare Network. Providing services in King and Snohomish County, EvergreenHealth has a dizzying array of information to provide to residents and patients of the area.
As the designated community hospital for Snohomish County, EvergreenHealth is expected to uphold the highest standard of accessibility and inclusivity in providing both medical care and information to the general public.
With accessibility and inclusivity so present in the fabric of the network, I was excited to review their website to see what provisions (if any) the developers for the website have made to accommodate accessibility standards online.
The Criteria:
What I'm Looking For:
- Alt-Tags - Are the images and other graphics labeled with alt-tags so that a screen reader will be able to describe the image?
(note: I do not have a screen reader so I will be looking at the code directly.) - Contrast -Does the website make use of contrast ratios in order to make the text easy to read.
- Layout - Does the website use a hierarchy or layout which makes sense? Does this travel down to text, are there headers, paragraphs. How is the information divided up.
- Documented Links - Are the links properly documented with where they go. Are any of the links mislabeled or not labeled at all?
Alt-Tags
The Good:
Adding alt tags is somewhat tedious, so I was pleasantly surprised to see that all the images I tested had alt tags filled out. Even the image carousel had a description in the alt tags. Alt tags are imperative to users who are using screen readers; especially when the images provide information vital to understand the page.
Alt tags are imperative to users who are using screen readers; especially when the images provide information vital to understand the page.
The Bad:
Although I was excited to see that the alt tags were filled out, I was disappointed to see that the information was not always the most accurate or that it had left out some important information.
Above in the image of the man and his daughter, the tag leaves at the image is an advertisement for "Concierge Family Medicine" and below, the image is labeled as an "analog clock" however there is no mention of it being a link for "Wait Times of Emergency Care".
Contrast
The Good:
The black text on a white background works well for reading and makes the text easy to see. The page makes use of headings and ample white space make the page easy to follow at a glance. Also, boxing similar information together creates a sense of cohesion.
The Bad:
Although the regular text is easy to read, my concern is that the teal hyperlinks are much more difficult to read on the white background. The lines around the edges seem to fade away. Additionally, the white text on top of the green background is also much harder to read than the black text was.
Layout
The Good:
Information is grouped in hierarchies, typically hidden underneath a drop-down menu. On the pages, information is again grouped together in logical ways making it relatively easy to locate information within the page.
The Bad:
Within the hierarchies there are some slight issue with grouping. Classes, for example are grouped under the "Patients & Visitors" Tab of the Nav bar (not the easiest place to find when a user is searching). Similarly some of the pages are organized very well while others are quite crowded.
Documented Links
The Good:
Every link I checked was either labeled to where it went in the name or had an elaborate alternate title indicating where the link went... sometimes both. I'm really impressed with this. I have nothing negative to say.
Conclusion
Accessibility is a silent necessity within web development. It is something that is needed in order to make sure that everyone will be able to understand the information on a website.
My take-aways from this test (small changes that might help user experience) are:
- Make sure to label well with alt-tags, make sure they are acurately describing what they are representing
- Adjust the lighter-colored text or add a border to make it easier to read on the white background.
- Adjust the hierarchies to make the information more easy to locate. Try to keep like information together or perhaps add tabs to accommodate information that is different.
With just a few easy changes, the site would be much more accessable for all users.


Hello World!
My name is Bruno Freitas and I have been learning and working on CS related projects for over 10 years. During this time
I have developed several applications mostly in PHP, sometimes supported by frameworks like Laravel, along with their respective Frontends.
While I have a background as an Architect in the AEC industry, I have been gradually acquiring skills in Software Engineering and Programming,
and hold a postgraduate in Open Source Software from Lisbon's ISCTE university.
Read on for some samples of my work and the technologies I work with.
You can also download my CV from one of the links below.
PROGRAMMING LANGUAGES
DATABASES, FRAMEWORKS & INTEGRATION
Developed with the AEC industry collaboration in mind, ArCollab is an application that allows multiple teams to track issues in Projects.
Technologies:
PHP, Laravel, HTML, CSS, JavaScript, Neo4j
G.O. was designed to make storing and retrieving personal information easy and smart. Content such as images and documents, task lists and contacts can be shared with other users, making it a powerfull organization tool.
Technologies:
PHP, Laravel, HTML, CSS, JavaScript, MySQL
This contacts database was created to solve a recurring problem of contacts storage and sharing in a restricted environment. It allows registering users with various permission levels, regarding the content they are allowed to access and/or edit.
Technologies:
PHP, HTML, CSS, MySQL
One of the first projects I ever developed, this expense tracker allows user registration, custom accounts and categories for each user, where income and expenses can be associated. It provides an interface to set monthly goals and simple graphs to keep track of transactions.
Technologies:
PHP, HTML, CSS, MySQL
This project was developed in the context of the Masters in Open Source Software, and was my first laravel app. It's a simple site that allows users to save their favorite repos from Github. Through REST and Github's API we are able to dynamically search available repositories as store them in our own structured folders for easy retrieval.
Technologies:
PHP, Laravel, HTML, CSS, JavaScript, REST, MySQL
Another of my early projects, this time tracker app allows user registration, custom categories / groups for each user, where tasks can be timed. It provides an interface to review total time spent working on specific projects or tasks.
Technologies:
PHP, Laravel, HTML, CSS, JavaScript, MySQL


My latest projects!
Media app that utilizing Foundation Framework and API calls to allow a user to look up Movie and TV Show Data worldwide!
Live DemoTry to beat the clock and compete against friend for the highscore and the chance to be the master of the Javascript Code Quiz!
Live DemoDynamic API app that is tasked with retrieving data from OpenWeather API and uses the data to display the current and 5-Day forecast for a locally searched city.
Demo


{% extends "app_base.html" %} {% block head_title %}Remove enrollment{% endblock %} {% block main %}
Removing this student from {{ enrollment.grade_level }} will make any associated school work inaccessible. Are you sure you want to remove {{ enrollment.student.first_name }}?
{% endblock %}


--- layout: post title: Notes on FATML permalink: /:title.html --- Filterable collection of papers in the field of fair, accountable and transparent machine learning, algorithms and ethics, and governance of algorithms.


Vitis vinifera (Vitis vinifera, IGGP_12x) and Populus trichocarpa (Populus trichocarpa, JGI2.0) were aligned using the LastZ alignment algorithm (LastZ) in Ensembl release 76. Vitis vinifera was used as the reference species. After running LastZ, the raw LastZ alignment blocks are chained according to their location in both genomes. During the final netting process, the best sub-chain is chosen in each region on the reference species.
Full list of pairwise alignments| Gap open penalty (O) | 400 |
| Gap extend penalty (E) | 30 |
| HSP threshold (K) | 3000 |
| Threshold for gapped extension (L) | |
| Threshold for alignments between gapped alignment blocks (H) | |
| Masking count (M) | |
| Seed and Transition value (T) | 1 |
| Additional parameters | |
| Scoring matrix (Q) | Default |
Number of alignment blocks: 210239
| Genome coverage(bp) | Coding exon coverage (bp) | |
|---|---|---|
| Vitis vinifera | ||
| Covered: 92,457,333 out of 486,265,422 | Matches: 21,512,987 out of 32,794,161 | |
| Uncovered: 393,808,089 out of 486,265,422 | Mis-matches: 7,526,674 out of 32,794,161 | |
| Insertions: 524,685 out of 32,794,161 | ||
| Uncovered: 3,229,815 out of 32,794,161 | ||
| Populus trichocarpa | ||
| Covered: 50,780,257 out of 417,137,944 | Matches: 18,099,608 out of 46,257,415 | |
| Uncovered: 366,357,687 out of 417,137,944 | Mis-matches: 6,170,077 out of 46,257,415 | |
| Insertions: 479,235 out of 46,257,415 | ||
| Uncovered: 21,508,495 out of 46,257,415 |


Men’s health. The
way it should be.
No waiting rooms or awkward conversations. Just clinically
proven treatments direct to your door with support along the
way.
-
UK licenced medication
-
Free, discreet delivery
-
Cancel any time
-
Ongoing clinician support
Healthcare. Made easy.
Rated excellent on Trustpilot
-
Treatments online
We’ll ask you a couple of quick medical questions. Tick the boxes and a clinician will review your answers and issue you a prescription.
-
Free fast delivery
Your selected treatments will be delivered for free in discreet packaging. There’ll be some helpful info included to make sure you get the best out of it.
-
Clinician support
Chat with a medical expert whenever you need. On the phone or via email. With support throughout your treatment.
The most effective treatments. Backed by science.
-
Hair Loss
Now hair loss is treatable. There are clinically proven treatments effective in 9/10 men. And we have them all here.
VIEW TREATMENTD -
Sex health
Erectile dysfunction (ED) happens to a lot of us. We can help you figure out why. And offer a number of treatments that can help too.
VIEW TREATMENTD -
Skin
Healthy skin is key to keep you feeling and looking your best. We’ve harnessed the best science has to offer so you can look after yours.
VIEW TREATMENTD -
Daily Health
Help your body fight the good fight with our scientifically proven range of nutrients and vitamins. Making healthier easier, every day.
VIEW TREATMENTD
NEW
Manual Wellbeing
Our new offering is a holistic plan to improve your health with recommendations from medical experts, as well as tracking and ongoing clinician support.
VIEW MORE-
Online consultation
-
Personalised health plan
-
Tracking & Clinician support
-
Hair
-
Immunity
-
Sleep
-
Sex Health
-
Brain
-
Digestion
-
Heart
-
Muscles
-
Skin
Our medical team work round the clock to bring you the most effective treatments available in the UK
Dr. Earim Chaudry, Medical Director
Trustpilot
Based on 1169 reviews
Meet our medical team
Enabling the mission of revolutionising how men approach health, they are at the core of the men’s wellness platform. Meet our team.
-
Earim Chaudry, MD
Medical Director
-
Earim Chaudry, MD
Pharmacist, Ind. Prescriber
-
Earim Chaudry, MD
Pharmacist, Ind. Prescriber
Get a free consultation
Speak with one of our clinicians and get personalised advice. Monday to Friday 9am-4:30pm
“It’s put a spark back into my relationship
and given me a huge amount of confidence
in the bedroom.”


Reach share price jumps as Mirror owner pulls out of JPI talks
Shares in the publisher jumped higher in early trading after it also reported a 4.4% decline in revenue for the five months to November 24.
Daily Mirror publisher Reach has said it is no longer in talks to buy some titles from JPI Media, which owns the i newspaper and The Yorkshire Post.
Reach, which also owns the Daily Express, said it was in talks to buy some assets in July but told investors on Friday that it is “no longer in active discussions” about acquisitions.
Shares in Reach leapt higher in early trading after the company reported a 4.4% decline in revenue for the five months to November 24, as the rate of decline improved from 6.6% in the same period in 2018.
It said trade during the period was “steady” and has continued to be in line with its expectations.
Like-for-like print revenues across the business slumped by 7.3%, which also reflected an improvement on an 8.2% decline a year earlier.
Meanwhile, digital sales jumped 14% over the five-month period, up from 9.3% growth in the previous year.
The company said its performance in the second half of the year has been buoyed by “good progress” on a number of digital initiatives.
Reach hailed “strong audience growth” across both its national and regional titles during the period, which it said has provided it with the “confidence” to expand into new areas.
It said it will launch at least seven new Live-branded news websites 2020, recruiting approximately 50 journalists.
Cash generation was strong during the period and it now expects a net positive cash balance at the end of the year, it added.
Reach chief executive Jim Mullen said: “Since joining the business in August, I’ve been impressed by the strength of Reach’s national and regional brands, the quality of our content and the wide geographic distribution of our products through both print and digital channels.
“I’ve also been encouraged by the wealth of talented and inspirational staff working in the business.
“We are working to complement our audience reach with a significant depth of customer insight and data that will allow us to build an intelligent, relevant and trusted content business for the long term.”
Shares in the company rose by 11.8% to 93.4p in early trading on Friday.


Glastonbury 2020: Organisers announce new glamping option for festival
Sticklinch is home to yurts, bell tents and more
by Robin MurrayGlastonbury Festival has announced a new glamping option which is perfect for those who aren't the keenest campers.
Sticklinch will be located on the former site of the West Campervan Fields at the 2020 festival, which is the event's 50th anniversary.
It will house pre-erected festival accommodation a short walk from the festival site including a range of podpads, yurts and bell tents, as well as a limited number of the festival's 'signature scout-style tents', and offers a more gentle walk to the festival than the existing Worthy View glamping site.
Glastonbury organisers described the new campsite as 'unpretentious accommodation', adding it's perfect for those who would 'like to have a tent ready and waiting for them on arrival at the festival, and nothing to carry home but their bags'.
The car park for Sticklinch is located in the adjacent field, a short walk away, but organisers encourage guests to travel by public transport where possible.
Prices range from £325 for a two-person scout tent up to £1,150 for the six-person octopad, while a four-person yurt will set you back £850.
A spokesperson said Sticklinch is part of the festival's continued commitment to reducing waste.
How to book
To make a booking, you will be required to enter the registration number you used when booking your festival ticket.
Bookings for Sticklinch Campsite will be taken exclusively by the festival’s nominated booking agency, See Tickets.
Coach and ticket package holders will have access to a pre-sale for Sticklinch accommodation from 6pm on Thursday, November 21 2019.
The pre-sale will be followed by a general release for coach package and general admission ticket holders at 7pm on the same day.
For the latest news in and around Bristol, visit and bookmark Bristol Live's homepage.


First Work Post!
This is pretty exciting! The next step is to moblog from the palm, including photos. Nifty.
About this entry
You"re currently reading "First Work Post!," an entry on a crick in the net
- Published:
- 05.18.04 / 10am
- Category:
- Circular File


chown, fchown, lchown, fchownat - change ownership of a file
#include <unistd.h>
int chown(const char *pathname, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(const char *pathname, uid_t owner, gid_t group);
#include <fcntl.h> /* Definition of AT_* constants */
#include <unistd.h>
int fchownat(int dirfd, const char *pathname,
uid_t owner, gid_t group, int flags);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
fchown(), lchown():
/* Since glibc 2.12: */
_POSIX_C_SOURCE >= 200809L
|| _XOPEN_SOURCE >= 500
|| /* Glibc versions <= 2.19: */ _BSD_SOURCE
fchownat():
- Since glibc 2.10:
- _POSIX_C_SOURCE >= 200809L
- Before glibc 2.10:
- _ATFILE_SOURCE
These system calls change the owner and group of a file. The chown(),
fchown(), and lchown() system calls differ only in how the file
is specified:
- chown() changes the ownership of the file specified by
pathname, which is dereferenced if it is a symbolic link.
- fchown() changes the ownership of the file referred to by the open
file descriptor fd.
- lchown() is like chown(), but does not dereference symbolic
links.
Only a privileged process (Linux: one with the CAP_CHOWN
capability) may change the owner of a file. The owner of a file may change
the group of the file to any group of which that owner is a member. A
privileged process (Linux: with CAP_CHOWN) may change the group
arbitrarily.
If the owner or group is specified as -1, then that
ID is not changed.
When the owner or group of an executable file is changed by an
unprivileged user, the S_ISUID and S_ISGID mode bits are
cleared. POSIX does not specify whether this also should happen when root
does the chown(); the Linux behavior depends on the kernel version,
and since Linux 2.2.13, root is treated like other users. In case of a
non-group-executable file (i.e., one for which the S_IXGRP bit is not
set) the S_ISGID bit indicates mandatory locking, and is not cleared
by a chown().
When the owner or group of an executable file is changed (by any
user), all capability sets for the file are cleared.
The fchownat() system call operates in exactly the same way as
chown(), except for the differences described here.
If the pathname given in pathname is relative, then it is
interpreted relative to the directory referred to by the file descriptor
dirfd (rather than relative to the current working directory of the
calling process, as is done by chown() for a relative pathname).
If pathname is relative and dirfd is the special
value AT_FDCWD, then pathname is interpreted relative to the
current working directory of the calling process (like chown()).
If pathname is absolute, then dirfd is ignored.
The flags argument is a bit mask created by ORing together
0 or more of the following values;
- AT_EMPTY_PATH (since Linux 2.6.39)
- If pathname is an empty string, operate on the file referred to by
dirfd (which may have been obtained using the open(2)
O_PATH flag). In this case, dirfd can refer to any type of
file, not just a directory. If dirfd is AT_FDCWD, the call
operates on the current working directory. This flag is Linux-specific;
define _GNU_SOURCE to obtain its definition.
- AT_SYMLINK_NOFOLLOW
- If pathname is a symbolic link, do not dereference it: instead
operate on the link itself, like lchown(). (By default,
fchownat() dereferences symbolic links, like chown().)
See openat(2) for an explanation of the need for
fchownat().
On success, zero is returned. On error, -1 is returned, and errno is set
appropriately.
Depending on the filesystem, errors other than those listed below can be
returned.
The more general errors for chown() are listed below.
- EACCES
- Search permission is denied on a component of the path prefix. (See also
path_resolution(7).)
- EFAULT
- pathname points outside your accessible address space.
- ELOOP
- Too many symbolic links were encountered in resolving
pathname.
- ENAMETOOLONG
- pathname is too long.
- ENOENT
- The file does not exist.
- ENOMEM
- Insufficient kernel memory was available.
- ENOTDIR
- A component of the path prefix is not a directory.
- EPERM
- The calling process did not have the required permissions (see above) to
change owner and/or group.
- EPERM
- The file is marked immutable or append-only. (See
ioctl_iflags(2).)
- EROFS
- The named file resides on a read-only filesystem.
The general errors for fchown() are listed below:
- EBADF
- fd is not a valid open file descriptor.
- EIO
- A low-level I/O error occurred while modifying the inode.
- ENOENT
- See above.
- EPERM
- See above.
- EROFS
- See above.
The same errors that occur for chown() can also occur for
fchownat(). The following additional errors can occur for
fchownat():
- EBADF
- dirfd is not a valid file descriptor.
- EINVAL
- Invalid flag specified in flags.
- ENOTDIR
- pathname is relative and dirfd is a file descriptor
referring to a file other than a directory.
fchownat() was added to Linux in kernel 2.6.16; library support was added
to glibc in version 2.4.
chown(), fchown(), lchown(): 4.4BSD, SVr4, POSIX.1-2001,
POSIX.1-2008.
The 4.4BSD version can be used only by the superuser (that is,
ordinary users cannot give away files).
fchownat(): POSIX.1-2008.
When a new file is created (by, for example, open(2) or mkdir(2)),
its owner is made the same as the filesystem user ID of the creating process.
The group of the file depends on a range of factors, including the type of
filesystem, the options used to mount the filesystem, and whether or not the
set-group-ID mode bit is enabled on the parent directory. If the filesystem
supports the -o grpid (or, synonymously
-o bsdgroups) and -o nogrpid (or, synonymously
-o sysvgroups) mount(8) options, then the rules are as
follows:
- If the filesystem is mounted with -o grpid, then the group
of a new file is made the same as that of the parent directory.
- If the filesystem is mounted with -o nogrpid and the
set-group-ID bit is disabled on the parent directory, then the group of a
new file is made the same as the process's filesystem GID.
- If the filesystem is mounted with -o nogrpid and the
set-group-ID bit is enabled on the parent directory, then the group of a
new file is made the same as that of the parent directory.
As at Linux 4.12, the -o grpid and
-o nogrpid mount options are supported by ext2, ext3, ext4,
and XFS. Filesystems that don't support these mount options follow the
-o nogrpid rules.
On older kernels where fchownat() is unavailable, the glibc wrapper
function falls back to the use of chown() and lchown(). When
pathname is a relative pathname, glibc constructs a pathname based on
the symbolic link in /proc/self/fd that corresponds to the dirfd
argument.
The chown() semantics are deliberately violated on NFS filesystems which
have UID mapping enabled. Additionally, the semantics of all system calls
which access the file contents are violated, because chown() may cause
immediate access revocation on already open files. Client side caching may
lead to a delay between the time where ownership have been changed to allow
access for a user and the time where the file can actually be accessed by the
user on other clients.
The original Linux chown(), fchown(), and lchown() system
calls supported only 16-bit user and group IDs. Subsequently, Linux 2.4 added
chown32(), fchown32(), and lchown32(), supporting 32-bit
IDs. The glibc chown(), fchown(), and lchown() wrapper
functions transparently deal with the variations across kernel versions.
In versions of Linux prior to 2.1.81 (and distinct from 2.1.46),
chown() did not follow symbolic links. Since Linux 2.1.81,
chown() does follow symbolic links, and there is a new system call
lchown() that does not follow symbolic links. Since Linux 2.1.86,
this new call (that has the same semantics as the old chown()) has
got the same syscall number, and chown() got the newly introduced
number.
The following program changes the ownership of the file named in its second
command-line argument to the value specified in its first command-line
argument. The new owner can be specified either as a numeric user ID, or as a
username (which is converted to a user ID by using getpwnam(3) to
perform a lookup in the system password file).
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
uid_t uid;
struct passwd *pwd;
char *endptr;
if (argc != 3 || argv[1][0] == '\0') {
fprintf(stderr, "%s <owner> <file>\n", argv[0]);
exit(EXIT_FAILURE);
}
uid = strtol(argv[1], &endptr, 10); /* Allow a numeric string */
if (*endptr != '\0') { /* Was not pure numeric string */
pwd = getpwnam(argv[1]); /* Try getting UID for username */
if (pwd == NULL) {
perror("getpwnam");
exit(EXIT_FAILURE);
}
uid = pwd->pw_uid;
}
if (chown(argv[2], uid, -1) == -1) {
perror("chown");
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
chgrp(1), chown(1), chmod(2), flock(2),
path_resolution(7), symlink(7)
This page is part of release 5.05 of the Linux man-pages project. A
description of the project, information about reporting bugs, and the latest
version of this page, can be found at https://www.kernel.org/doc/man-pages/.


ZGREP(1) ZGREP(1) NAME zgrep - search possibly compressed files for a regular expression SYNOPSIS zgrep [ grep_options ] [ -e ] pattern filename... DESCRIPTION Zgrep invokes grep on compressed or gzipped files. All options specified are passed directly to grep. If no file is specified, then the standard input is decompressed if necessary and fed to grep. Otherwise the given files are uncompressed if necessary and fed to grep. If the GREP environment variable is set, zgrep uses it as the grep pro‐ gram to be invoked. AUTHOR Charles Levert<EMAIL_ADDRESS>SEE ALSO grep(1), gzexe(1), gzip(1), zdiff(1), zforce(1), zmore(1), znew(1) ZGREP(1)


Eliminating duplicate content so your site doesn’t get penalized
Duplicate content is a huge NONO since it confuses engines
Hundreds of pages that use the same title, description, or even page content can trigger Googles spam detection.
Domain can be blacklisted from google until a reconsideration request
Duplicates hurt the user experience
Write clear and unique page titles and descriptions for each product page on your site
Never reuse them
If site is a drop shipping store or a reseller of existing products do not copy and past the manufacturer description (penalized by google)
Canonical tag help prevent duplicate content
Avoiding unnatural keyword usage
Keyword density in SEO refers to the total number of targeted keywords on the page divided by the total number of words on the page
In modern SEO most experts agree that its much more important to write natural text and worry second on density
If visitors read a site that has keyword stuffing it will look like spam
Some website owners have gone as far as hide keywords in an identically colored background but not realize search spiders will see it in the code.
Cloaking proven to diminish or even entirely prevent the page from your site from being included in search results
Cloaking will get you heavily penalized in search rankings (do not do this)
Using rich media to promote your SEO results
Videos, animations, large hero pages of a website
Its important to optimize these elements in SEO the correct way
To avoid slow loading speeds by rich media google indicates site load speed and page speed are used by an algorithm
Compressjpeg.com can compress larger images that impact website load time
Minimizing your website loading speeds
Page speed insights
Tool provides suggestions to improve your load screen.
Optimize all videos and images
Use a quality host
Minify code to improve website load speed
CDN - content delivery network
That can distribute them from geographically diverse data centers to improve load speed
CDN to speed up the delivery of elements that power the site occur in larger platforms
Not all users may visit your site from a quick internet connection, so it's important that you site loads smoothly and efficiently.
Correlating your SEO efforts to sales or other quantitative measures
SEO is about making small meaningful tweaks to your website and measuring the impact
Google Analytics is a reporting tool that you can sign up for and easily install on your website
Conversions area : Goals
Then under goals: Overview
Setup goals: red button
Goal based on a completed checkout or a purchase
Set up as Revenue Goal
Name the goal
Set a goal type
Destination goal
Incorporating Measurement and Optimization Tools
Using Optimizely for A/B testing
Learning how to A-B- Test designs tweak on your site can clarify exactly how to present your information to visitors that youve worked so hard to aquire
A-B-Testing is also called Split Test and is shows slightly different versions of the site to segment of your traffic
Tool: Optimizely.com
Need to make a few design tweaks to your site which are actually made directly in the Optimizely interface and determine your goal
Creates an experimental site and allows elements for editing
We can measure success rates to know which experimental site was better
The optimization system takes care of presenting the tweaks made.
Harnessing Google Analytics to better understand site visitors
Google Analytics, gives you tons of valuable information about your visitors location, key works they’ve used to find the site, what pages they land on, what they did on your site.
You can see that we can set amount of time, or the dates that we want to measure, up in the top right
You can see number of visitors, how many pages they are visiting on average,
And the amount of time spent on site
Helps better understand the demographics on the traffic, and where people are coming from.
Google implemented “not provided” that is a large percentage of traffic.
When users are logged in they aren’t tracked
Google analytics is a large application and there are many powerful features that are beneficial to seo tracking efforts
Employing heatmapping tools to measure and monitor page usage
To better understand where users are clicking on your site and how far down the page they are scrolling install heatmapping tool
Provide a color coded guide to the specific areas that are getting attention
A snapshot is like an experiment that we have run and it allows us to measure and monitor what users are doing on specific pages of the site
The brighter the area the more popular it is
Can make changes while viewing snapshots
Alternative: Crazy egg
Applying Moz for larger scale sites
Moz is a suite if SEO products designed for larger scale sites from analytics to page gradings.
Site editor: compare backlinks with competitors
Analytics Campaigns: can see search visibility and average rankings
Search overview dashboard: percentage of traffic from organic search
Site explorer: give information about any site we input
Page Grader: measure a page grade for a particular keyword


Home
Profile
Locations
Attach your location history and search history in the labeled sections below and see what happens.
Location
ⓘ
Submit
Searches
ⓘ
Submit
Falsify Data?


Fire damages multiple vehicles at McCarran parking garage
by Julie Wootton-GreenerFirefighters extinguished a car fire within minutes Saturday in a parking garage at McCarran International Airport.
The initial report came in around 11:15 a.m. of a car on fire in the Terminal 3 parking garage, said Chris Jones, spokesman for McCarran International Airport.
Six nearby vehicles also were damaged, Jones said, but he was not aware of anyone who was injured.
Firefighters put out the fire within a few minutes, he said.
The parking garage — which includes short-term, long-term and employee parking — was initially closed off, Jones said. As of 12:30 p.m., Jones didn’t know if the garage was still closed.
Clark County Fire Department officials didn’t have further information Saturday afternoon.


Chase your dreams through us!
E Web Digital is specialized in delivering comprehensive web services that include Website designing & development, Digital Marketing Services, E-commerce solutions, software development & application development are some of our services named here. We have designed our offerings as per the business requirements of clients & highly customized business solutions. We believe in mixing our expert knowledge with technological competence to delivered quality services to our clients in the most cost-effective manner so that it could help them in enhancing their productivity & competitive advantage.
To channelize our efforts in the betterment of the client’s business, we have structured our business on 3 major pillars:-...
Goal-oriented Methodology
No business enterprise can sustain its growth by deviating from its goal of the establishment. We consider the goals of our clients paramount, so all our services are developed & delivered to reduce the complexity in achieving goals.
Awesome Support
Through a supportive attitude & ceaseless dedication of our workforce, we have managed to establish ourselves as one of the best web service provider in central India.
Corporate business
We are committed to provide our clients higher satisfaction through dealings in more corporate-style.
Overview:
E Web Digital is one of the leading website designing service provider company, based in Aurangabad (Maharashtra), at the heart of India. We have prioritized by partnering with our clients in simplifying their business operations & help them in marking their presence online. We are engaged in website designing, developing & execution of websites, software & mobile-applications.
Why to Choose US?:
With an unmatched experience of serving customers of diverse backgrounds through our team of the skilled workforce who are dedicated to converting the ideas of business development into reality by allocating knowledge-based research & strategic planning.
IT Service Provider
E Web Digital is the best web solutions company in Aurangabad,Pune. We provide Website Designing, Web Development, Digital Marketing Services & other services to our clients. Our motto is to help our client’s in generating the maximum number of visitors on their respective websites via high-quality website development & designs. We guide clients for higher optimization of their website as per their audience.
Website Development
Website is the core of your online business activity and we are committed to delivering best website development services to our clients.
Software Development
We provide cutting-edge software to our clients for their day-to-day activities. Our cost-effective software provide high level of work efficiency.
Mobile Applications
We develop mobile applications for all platforms like Android, iOS & Windows. Offers end-to-end App Development Services.
Digital Marketing
Our services include SEO, Google AdWords, Social media promotion, YouTube promotion, E-mail marketing & on-page as well as off-page SEO.
Ecommerce Solutions
Our ECommerce services include promotional activities, product listing, profile development
Web Hosting
web hosting services that include domains, unlimited space & unlimited email accounts.
Why choose us?
E Web Digital is the best web solutions company in Aurangabad. We provide Web Designing, Web Development, Digital Marketing services in Aurangabad to our clients
Expirence
We love discussing and planning new projects and have years of knowledge and experience that we bring to the table
Passionate
We love nothing more that working on a great project with a fantastic client. We care about our clients and can often be found working out of hours to get everything ‘just right’!
Creative & Techincal
Whether it’s website or graphic design, system development or custom programming we like to keep everything under one roof to make it easier for our customers
Our Clients
Testimonials
Nakul Katkar
Ceo & Founder
“I just wanted to share a quick note and let you know that you guys do a really good job. I’m glad I decided to work with you. It’s really great how easy your websites are to update and manage. I never have any problem at all."
Aakash Jadhav
Ceo & Founder
"My new site is so much faster and easier to work with than my old site. It used to take me an hour or more to update a page and I would still sometimes screw things up. Now it’s almost like having a designer right here with me. I just choose the page, make the change and click save. Thanks, guys!"
Rohan Jadhav
Ceo & Founder
"You made it so simple.My new site is so much faster and easier to work with than my old site. I just choose the page, make the change and click save. Thanks, guys!"
J Rajput
Managing Director
"Wow.I just updated my site and it was non-exhausting.I am blown away.You guys truly fantastic.Thanks for being so awesome. High fives!"
Balaji Vaidya
Entrepreneur
"Fantastic work! I am just impressed by their service quality and working strategy.They have a great expertise, are dedicated, attentive, talented and care much about the client needs. Highly recommended."


lutz: Look Up Time Zones of Point Coordinates
Input latitude and longitude values or an 'sf/sfc' POINT
object and get back the timezone in which they exist. Two methods are implemented.
One is very fast and uses the 'V8' package to access the 'tz-lookup.js' 'Javascript' library
(<https://github.com/darkskyapp/tz-lookup/>). This method also works outside of countries'
borders and in international waters, however speed comes at the cost of accuracy - near time
zone borders away from populated centres there is a chance that it will return the incorrect
time zone. The other method is slower but more accurate - it uses the sf package to intersect
points with a detailed map of time zones from here:
<https://github.com/evansiroky/timezone-boundary-builder/>.
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=lutz
to link to this page.


--- title: JSON Data To CSV File Format Converter | Developer Tools layout: post ---
{% include common-meta %}This is a free online tool to convert a JSON formatted data to csv file format. This can be useful for automation testing of REST based services. You can convert any JSON data to CSV or spreadsheet format using this tool. CSV Files can be easily opened in popular tools like Microsoft Excel and Google Spreadsheets.
JSON (JavaScript Object Notation) is a popular format used to transfer data between applications. It is very common object format in web applications. JavaScript applications do not require any speciall handling for this type of data since its is already an object of javascript format.
CSV files are common way to store spreadsheet data.
CSV files are easy to read and can contain entries that can be easily seen in tools like Microsoft Excell, Mac OS Numbers and Google Spreadsheets.
The online converter is a good help for automation testing of REST based services. This tool can be handy since you just need to paste the JSON response in the input field and hit convert button.
The same task can be done manually, however it can be cumbersome. This tool can save you some time and follow a consistent pattern in organized sheet.
You just need to copy and paste the JSON data into this tool and get the csv format data, each field in JSON becomes a column header.
Many times, we do not want to parse the full JSON since only small part of the data is used. In that case this tool can help you hand pick the fields you are interseted in.


TRACKS PLAYLISTS RELATED TO '{{ queryString }}'
|
{{ track.name }}
{{ getDuration(track.duration_ms) }}
|
{{ getArtistNames(track.artists) }} |
|
{{ playlist.name }}
{{ playlist.tracks.total }} tracks
|
{{ playlist.owner.display_name }} |


this is the first entry of my website.The website is part of portfolio. This website is about my interests, hobbies, and goals


"""
Overview of ``logs.py``
-----------------------
This is a low-tech solution to leaving a trail of breadcrumbs behind
in your ``PostgreSQL`` database. It creates a table named ``db_history``
and many ``postGIS_tools.functions`` use the ``log_activity()`` function
to update this table after successfully completing their task.
Example
-------
>>> import postGIS_tools as pGIS
>>> pGIS.log_activity("my_database", "execute_query", "UPDATE my_table SET my_col = 'my value'", debug=True)
Logging to db_history:
INSERT INTO db_history (username, function_name, query_text, update_time, user_os, user_cpu)
VALUES ('aaron', 'execute_query', 'UPDATE my_table SET my_col = ''my value''',
'2019-11-23 09:00:26 PST', 'Darwin', 'Aaron-MBP.local');
"""
from datetime import datetime
from pytz import timezone
import psycopg2
from postGIS_tools.constants import PG_PASSWORD
from postGIS_tools.configurations import THIS_SYSTEM, THIS_USER, THIS_COMPUTER
def _make_log_table(
db_name: str,
host: str = 'localhost',
username: str = 'postgres',
password: str = PG_PASSWORD,
port: int = 5432,
debug: bool = True
):
"""
Execute a query to create the ``db_history`` table.
:param db_name: name of the database
:param host: name of the pgSQL host (string). eg: 'localhost' or '<IP_ADDRESS>'
:param username: valid PostgreSQL database username (string). eg: 'postgres'
:param password: password for the supplied username (string). eg: 'mypassword123'
:param port: port number for the PgSQL database. eg: 5432
:param debug: boolean to print messages to console
:return: creates ``db_history`` table within specified database
"""
query_to_make_table = f"""
CREATE TABLE db_history (
uid SERIAL PRIMARY KEY,
username VARCHAR(255),
function_name TEXT,
query_text TEXT,
update_time TIMESTAMP WITH TIME ZONE,
user_os VARCHAR(255),
user_cpu VARCHAR(255)
)
"""
uri = f'postgresql://{username}:{password}@{host}:{port}/{db_name}'
if debug:
print(f"Making db_history log table within {uri}")
try:
connection = psycopg2.connect(uri)
cur = connection.cursor()
cur.execute(query_to_make_table)
cur.close()
connection.commit()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if connection is not None:
connection.close()
def _log_table_exists(
db_name: str,
host: str = 'localhost',
username: str = 'postgres',
password: str = PG_PASSWORD,
port: int = 5432,
debug: bool = True
):
"""
Check if the ``db_history`` log table exists. If not, run ``_make_log_table()``
:param db_name: name of the database
:param host: name of the pgSQL host (string). eg: 'localhost' or '<IP_ADDRESS>'
:param username: valid PostgreSQL database username (string). eg: 'postgres'
:param password: password for the supplied username (string). eg: 'mypassword123'
:param port: port number for the PgSQL database. eg: 5432
:param debug: boolean to print messages to console
:return: boolean True or False if the log table exists
"""
exists_query = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"
uri = f'postgresql://{username}:{password}@{host}:{port}/{db_name}'
connection = psycopg2.connect(uri)
cursor = connection.cursor()
cursor.execute(exists_query)
result = cursor.fetchall()
result_list = [x[0] for x in result]
cursor.close()
connection.close()
if "db_history" in result_list:
return True
else:
if debug:
print("The db_history log table does not yet exist")
return False
[docs]def log_activity(
db_name: str,
function_name: str,
query_text: str = "",
local_timezone: str = "US/Pacific",
host: str = 'localhost',
username: str = 'postgres',
password: str = PG_PASSWORD,
port: int = 5432,
debug: bool = True
):
"""
Record what was done to a database in a new row within the ``db_history`` table.
User must specify the database and function name that was run.
Optionally, the raw SQL code can also be stored in the query_text column.
If the ``db_history`` table does not exist yet, make the table before inserting this row.
:param db_name: name of the database (string)
:param function_name: the name of the function that was run (string)
:param query_text: the SQL text that was run (string)
:param local_timezone: the user's local (or preferred) timezone (string). Must match ``datetime.datetime`` options
:param host: name of the pgSQL host (string). eg: 'localhost' or '<IP_ADDRESS>'
:param username: valid PostgreSQL database username (string). eg: 'postgres'
:param password: password for the supplied username (string). eg: 'mypassword123'
:param port: port number for the PgSQL database. eg: 5432
:param debug: boolean to print messages to console
:return: inserts a new row into the ``db_history`` table
"""
uri = f'postgresql://{username}:{password}@{host}:{port}/{db_name}'
config = {'host': host, 'username': username, 'password': password, 'port': port, 'debug': debug}
# Create the db_history log table if it doesn't exist yet
if not _log_table_exists(db_name, **config):
_make_log_table(db_name, **config)
# Get a timestamp for right now
right_now = timezone(local_timezone).localize(datetime.now())
right_now = right_now.strftime("%Y-%m-%d %H:%M:%S %Z")
# Escape any single quotes in the query text
query_text = query_text.replace("'", "''")
# Insert the values as a new row
insert_query = f"""
INSERT INTO db_history (username, function_name, query_text, update_time, user_os, user_cpu)
VALUES ('{THIS_USER}', '{function_name}', '{query_text}',
'{right_now}', '{THIS_SYSTEM}', '{THIS_COMPUTER}');
"""
if debug:
print("Logging to db_history:")
print(insert_query)
try:
connection = psycopg2.connect(uri)
cursor = connection.cursor()
cursor.execute(insert_query)
cursor.close()
connection.commit()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if connection is not None:
connection.close()
if __name__ == "__main__":
log_activity("ds_test", "testing_function2", "UPDATE my_table SET my_col = 'my value'", debug=True)