Find the probability density functions of $X$ and $Y$ If $X$ and $Y$ have joint density function
$
f_{X, Y}(x, y)=
\begin{cases}
1/y, &\text{if } 0<y<1, &0<x<y \\
0, &\text{otherwise}
\end{cases}
$
find the probability density function of $X$, i.e., $f_X(x)$ and the probability density function of $Y$, i.e., $f_Y(y)$. 

My attempt:
The formulas for $f_X(x)$ and $f_Y(y)$ are:
$$f_X(x)=\int_{-\infty}^\infty f_{X, Y}(x, y)\ dy$$
$$f_Y(y)=\int_{-\infty}^\infty f_{X, Y}(x, y)\ dx$$
I can substitute $1/y$ for $f_{X, Y}(x, y)$ but I'm unsure what the new limits of integration would be. Any suggestions?
 A: Here's an attempt.
We have the upper triangular region of the $[0,1] \times [0,1]$ as our domain of integration, so we just need to figure out how to write these bounds.
We have $\int_0^1 \int_0^y 1/y \text{ } dx \text{ } dy = \int_0^1 \int_x^1 1/y \text{ } dy \text{ } dx = 1$, so the marginal $f_Y(y)$ can be found as
$$
\int_0^y f_{X,Y}(x,y) dx = 1
$$
and similarly the marginal $f_X(x)$ can be found as
$$
\int_x^1 f_{X,Y}(x,y) dy = -\log(x)
$$
I also wrote a small Metropolis-Hastings MCMC program to simulate from this distribution as a sanity check and have included my R code below.
fxy <- function(x,y){
  1/y * (x<y) * (y<1) * (x>0) * (y>0)
}

mh <- function(niter,xstart,ystart,propsd){
  x=rep(NA,niter)
  y=rep(NA,niter)
  res = list(x=x,y=y)
  res$x[1] = xstart
  res$y[1] = ystart
  for(i in 2:niter){
    xold <- res$x[i-1]
    yold <- res$y[i-1]
    xnew <- xold + rnorm(1,0,propsd)
    ynew <- yold + rnorm(1,0,propsd)
    A <- min(1,fxy(xnew,ynew)/fxy(xold,yold))
    if(runif(1) < A){
      res$x[i] <- xnew
      res$y[i] <- ynew
    } else {
      res$x[i] <- xold
      res$y[i] <- yold
    }
  }
  return(res)
}

niter <- 1e4
res <- mh(niter=niter,xstart=0.25,ystart=0.5,propsd=0.5)
hist(res$x,freq=F)
xx <- seq(0.01,1,by=0.01)
lines(-log(xx)~xx,col='red')
hist(res$y)

Plotting the histograms we see $f_Y(y) \propto 1$ and $f_X(x) \propto -\log(x)$

