next.js, nginx, reverse-proxy, ssl
$ sudo apt-get update
$ sudo apt-get install nginx letsencrypt| function memorySizeOf(obj) { | |
| var bytes = 0; | |
| function sizeOf(obj) { | |
| if(obj !== null && obj !== undefined) { | |
| switch(typeof obj) { | |
| case 'number': | |
| bytes += 8; | |
| break; | |
| case 'string': |
| /*------------------------------------------ | |
| Responsive Grid Media Queries - 1280, 1024, 768, 480 | |
| 1280-1024 - desktop (default grid) | |
| 1024-768 - tablet landscape | |
| 768-480 - tablet | |
| 480-less - phone landscape & smaller | |
| --------------------------------------------*/ | |
| @media all and (min-width: 1024px) and (max-width: 1280px) { } | |
| @media all and (min-width: 768px) and (max-width: 1024px) { } |
| // Scrollbar with Hover Transition Effect | |
| .container::-webkit-scrollbar { | |
| width: 14px; | |
| } | |
| .container::-webkit-scrollbar-thumb { | |
| background-clip: content-box; | |
| border: 4px solid transparent; | |
| border-radius: 7px; | |
| box-shadow: inset 0 0 0 10px; | |
| } |
| //------- | |
| public static final String BASE_URL = "https://lateralview.co"; | |
| public static final String HEADER_CACHE_CONTROL = "Cache-Control"; | |
| public static final String HEADER_PRAGMA = "Pragma"; | |
| private Context mContext; | |
| //------- |
| import android.content.Context; | |
| import android.graphics.Canvas; | |
| import android.graphics.Paint; | |
| import android.support.annotation.NonNull; | |
| import android.support.annotation.Nullable; | |
| import android.text.Editable; | |
| import android.text.Spannable; | |
| import android.text.TextWatcher; |
| import android.content.Context; | |
| import android.graphics.Canvas; | |
| import android.graphics.drawable.Drawable; | |
| import android.support.v7.widget.AppCompatEditText; | |
| import android.util.AttributeSet; | |
| import android.util.SparseArray; | |
| import java.util.regex.Matcher; | |
| import java.util.regex.Pattern; |
| function objectToQuerystring (obj) { | |
| return Object.keys.reduce(function (str, key, i) { | |
| var delimiter, val; | |
| delimiter = (i === 0) ? '?' : '&'; | |
| key = encodeURIComponent(key); | |
| val = encodeURIComponent(obj[key]); | |
| return [str, delimiter, key, '=', val].join(''); | |
| }, ''); | |
| } |
| # to generate your dhparam.pem file, run in the terminal | |
| openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 |
| function CSVToMatrix(csv,delimiter){ | |
| let matrix = []; | |
| csv.split('\n').map( l => { l.trim() == "" ? 0 : matrix.push(l.trim().split(delimiter).map(v=>v.trim())) }) | |
| return matrix | |
| } | |
| function MatrixToJSON(matrix,from,to){ | |
| let jsonResult = []; from = from||0; | |
| matrix.map((a,i) => { | |
| let obj = Object.assign({}, ...matrix[0].map((h, index) => ({[h]: matrix[i][index]}))) |