Skip to content

Instantly share code, notes, and snippets.

Soheil Hassas Yeganeh soheilhy

Block or report user

Report or block soheilhy

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
soheilhy /
Last active Oct 18, 2019
How to proxy web apps using nginx?

Virtual Hosts on nginx (CSC309)

When hosting our web applications, we often have one public IP address (i.e., an IP address visible to the outside world) using which we want to host multiple web apps. For example, one may wants to host three different web apps respectively for,, and on the same machine using a single IP address.

How can we do that? Well, the good news is Internet browsers


Testing Node.JS applications using Mocha

Mocha is a unittest framework for Node. In this document, we explain how you can test your javascript code and also your HTTP servers.

Installing Mocha

Use npm to install Mocha:

npm install mocha
soheilhy / server.go
Created Aug 1, 2015
grpc route guide server + cmux
View server.go
* Copyright 2015, Google Inc.
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
soheilhy / HttpServer.scala
Created Jun 14, 2012
Routing based on HTTP method in Finagle
View HttpServer.scala
import com.twitter.finagle.http.path._
import com.twitter.finagle.http.service.RoutingService
import com.twitter.finagle.http.{Request, Response, RichHttp, Http}
import com.twitter.finagle.{Service, SimpleFilter}
import org.jboss.netty.handler.codec.http._
import org.jboss.netty.handler.codec.http.HttpResponseStatus._
import org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1
import org.jboss.netty.buffer.ChannelBuffers.copiedBuffer
import org.jboss.netty.util.CharsetUtil.UTF_8
import com.twitter.util.Future
View dummyserver.js
var http = require('http');
var hello = function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Hello! <br />');
res.write('<br />' +
'URL:' + req.url + '<br />' +
'Method:' + req.method + '<br />');
soheilhy / gist:3077008
Created Jul 9, 2012
A generic routing service
View gist:3077008
class RoutingService[REQUEST <: Request, RESPONSE](
val routes: PartialFunction[Request, Service[REQUEST, RESPONSE]])
extends Service[REQUEST, RESPONSE] {
protected[this] val requestToService = routes
def apply(request: REQUEST): Future[RESPONSE] = {
val service = requestToService(request)
View CakePattern.scala
// You create the trait.
trait JavaScriptCompilerComponent {
def compiler: JavaScriptCompiler
// You add the abstract method to get all javascript files.
def jsFiles: Seq[Source]
def getCompiledJavaScript = compiler.compile(jsFiles)
trait JavaScriptCompiler {
soheilhy / CakePatternIm.scala
Created Jun 20, 2012
Cake Pattern Imitated
View CakePatternIm.scala
// You create the trait.
trait JavaScriptCompilerComponent {
def compiler: JavaScriptCompiler
trait JavaScriptCompiler {
def compile(files: Seq[Source]): String
// You implement it.
View cmux_example.go
// Create the main listener.
lis, err := net.Listen("tcp", ":23456")
if err != nil {
// Create a cmux.
mux := cmux.New(lis)
// Match connections in order:
soheilhy / main.go
Last active Aug 29, 2015
Incomplete TaskQ/main()
View main.go
func main() {
h := beehive.NewHive()
go h.Start()
defer h.Stop()
q := taskq.Queue("MyQueue")
b := "copy f1 to f2"
enq := taskq.Enque{Task: taskq.Task{Queue: q, Body: []byte(b)}}
You can’t perform that action at this time.