These are the steps I take to start a basic React project on an ExpressJS server. Clone the finished boilerplate from here: https://github.com/jefferyshivers/React-Express-Boilerplate
mkdir reactexpress && cd $_
const PROTO_PATH = __dirname + '/.protop/path/awesomelabs/numbers/money.proto'; | |
const grpc = require('grpc'); | |
const protoLoader = require('@grpc/proto-loader'); | |
const packageDefinition = protoLoader.loadSync(PROTO_PATH, { keepCase: true, enums: String }); | |
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition); | |
const numbers = protoDescriptor.awesomelabs.numbers; | |
const moneyServiceStub = new numbers.MoneyService('localhost:8080', grpc.credentials.createInsecure()); |
syntax = "proto3"; | |
package awesomelabs.numbers; | |
service MoneyService { | |
rpc Convert(ConvertMoneyRequest) returns (Money); | |
} | |
enum Currency { | |
USD = 0; |
task protop(type: Exec) { | |
commandLine "protop", "sync", "--git-refresh" | |
} | |
protobuf { | |
generateProtoTasks { | |
all().each { task -> | |
task.dependsOn protop // Make sure `protop sync` happens before the proto generators | |
} | |
} | |
} |
package awesomelabs.numbers; | |
import io.grpc.stub.StreamObserver; | |
public class MoneyService extends MoneyServiceGrpc.MoneyServiceImplBase { | |
@Override | |
public void convert(MoneyOuterClass.ConvertMoneyRequest request, | |
StreamObserver<MoneyOuterClass.Money> responseObserver) { | |
MoneyOuterClass.Money originalMoney = request.getOriginal(); |
import com.lowagie.text.DocumentException; | |
import org.xhtmlrenderer.pdf.ITextRenderer; | |
import java.io.*; | |
import java.net.URL; | |
public class PDF { | |
private void render() throws DocumentException, IOException { | |
ITextRenderer iTextRenderer = new ITextRenderer(); | |
iTextRenderer.setDocument(getHtml()); |
These are the steps I take to start a basic React project on an ExpressJS server. Clone the finished boilerplate from here: https://github.com/jefferyshivers/React-Express-Boilerplate
mkdir reactexpress && cd $_