Skip to content

Instantly share code, notes, and snippets.

How to setup Shadowsocks on your Ubuntu server

Your school or company network may block the access to a few specific websites. To solve this problem, I'd highly recommend Shadowsocks, since it is the easiest proxy tool I've ever found, and it's FREE (of course iff you have your own server running).

First, ssh to your server, and make sure you have Python and pip installed. If you have Python but not pip, install it using the following command

$ sudo apt-get install python3-pip
@ofarukcaki
ofarukcaki / notes.md
Created May 22, 2018 14:32 — forked from matthewjberger/notes.md
How to make an electron app using Create-React-App and Electron with Electron-Builder.
@ofarukcaki
ofarukcaki / default.md
Last active November 29, 2023 12:00
create-react-app with react-router Nginx 404 error solution in page refresh

You need to edit /etc/nginx/sites/available/default file

change the location part as follows

location / { try_files $uri $uri/ /index.html; }

lastly, refresh the Nginx with sudo servuce restart nginx

Option 1: Command-line download extension as zip and extract

extension_id=jifpbeccnghkjeaalbbjmodiffmgedin   # change this ID
curl -L -o "$extension_id.zip" "https://clients2.google.com/service/update2/crx?response=redirect&os=mac&arch=x86-64&nacl_arch=x86-64&prod=chromecrx&prodchannel=stable&prodversion=44.0.2403.130&x=id%3D$extension_id%26uc" 
unzip -d "$extension_id-source" "$extension_id.zip"

Thx to crxviewer for the magic download URL.

@ofarukcaki
ofarukcaki / next.config.js
Created January 23, 2019 21:17 — forked from balupton/next.config.js
next.js webpack configs
module.exports = {
webpack: (config) => {
const webpack = require('webpack')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
config.plugins = config.plugins || []
config.plugins.push(new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /en/))
config.plugins.push(new BundleAnalyzerPlugin())
return config
}
}
@ofarukcaki
ofarukcaki / free_email_provider_domains.txt
Created February 22, 2019 13:14 — forked from tbrianjones/free_email_provider_domains.txt
A list of free email provider domains. Some of these are probably not around anymore. I've combined a dozen lists from around the web. Current "major providers" should all be in here as of the date this is created.
1033edge.com
11mail.com
123.com
123box.net
123india.com
123mail.cl
123qwe.co.uk
126.com
150ml.com
15meg4free.com
@ofarukcaki
ofarukcaki / client.js
Created March 23, 2019 00:14 — forked from crtr0/client.js
A simple example of setting-up dynamic "rooms" for socket.io clients to join
// set-up a connection between the client and the server
var socket = io.connect();
// let's assume that the client page, once rendered, knows what room it wants to join
var room = "abc123";
socket.on('connect', function() {
// Connected, let's sign-up for to receive messages for this room
socket.emit('room', room);
});
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: false
});
const page = (await browser.pages())[0];
// imaginary page with a captcha on it
await page.goto(
const puppeteer = require("puppeteer");
const captcha = require("async-captcha");
const anticaptcha = new captcha("YOUR_API_KEY", 2, 10); // (api_key, interval(seconds), retry(amount))
(async () => {
const browser = await puppeteer.launch({
headless: false,
defaultViewport: false
});
const page = (await browser.pages())[0];

Keybase proof

I hereby claim:

  • I am ofarukcaki on github.
  • I am ofarukcaki (https://keybase.io/ofarukcaki) on keybase.
  • I have a public key ASAn0XqOvhlUKBynDCTdY7c5D9fIuZl6h5mZlwlQ73WDiwo

To claim this, I am signing this object: