Skip to content

Instantly share code, notes, and snippets.

View migue's full-sized avatar

Miguel Ángel Pastor Olivar migue

View GitHub Profile
@migue
migue / profile.go
Created February 2, 2021 08:30
Go profiling server
func SetupProfiler() (*http.Server, chan error, error) {
profilerRouter := chi.NewRouter()
profilerRouter.Mount("/profile", Profiler())
server := http.Server{
Addr: fmt.Sprintf(":%v", 8080),
Handler: profilerRouter,
}
errChannel := make(chan error)
@migue
migue / go-intro.md
Created August 28, 2020 10:34
Syllabus for an introductory course to programming in Go I will be teaching next winter

Programming in Go: an introduction

A short course to introduce my students to the Go programming language.

I try to provide my students with a comprehensive, and idiomatic view of the Go programming language, focusing on different topics ranging from language syntax, design, and good practices to concurrency, testing or profiling.

Chapter one: Syntax and data structures

This chapter will try to cover the basic concepts and syntax of the language:

@migue
migue / keybase.md
Created August 23, 2016 12:59
keybase.md

Keybase proof

I hereby claim:

  • I am migue on github.
  • I am migue (https://keybase.io/migue) on keybase.
  • I have a public key whose fingerprint is EE82 C22C 6940 DC87 980B DD0D 6030 1003 8417 548B

To claim this, I am signing this object:

@migue
migue / MessageBoardsClassifier.scala
Created November 18, 2014 08:26
Liferay message boards classifier
val ssc = new StreamingContext(conf, Seconds(5))
val topicMap = topics.split(",").map((_,numThreads.toInt)).toMap
val kafkaStream = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
val model = new KMeansModel(ssc.sparkContext.objectFile[Vector](modelFile.toString).collect())
val filteredMessages = kafkaStream
.filter(m => model.predict(Utils.featurize(m)) == clusterNumber.toInt)
@migue
migue / MessageBoardsFeaturize.scala
Created November 17, 2014 15:47
Featurize message boards
package com.liferay.message.boards.classifier
import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.feature.HashingTF
object Utils {
val numFeatures = 1000
val tf = new HashingTF(numFeatures)
@migue
migue / MessageBoardsKmeansTrain.scala
Created November 17, 2014 15:11
K-means train process on message boards
val messagesTable = sc.textFile(messagesInput).map(_.split(";")).map(m => MBMessage(m(4), m(5)))
val schema =
StructType(
StructField("title", StringType, false) ::
StructField("body", StringType, true) :: Nil)
val messagesSchemaRDD = sqlContext.applySchema(messagesTable, schema)
messagesSchemaRDD.registerTempTable("messagesTable")
@migue
migue / MessagesBoardCollector.scala
Created November 17, 2014 14:35
Collector of Message Boards messages from a Kafka topic using Spark Streaming
val sparkConf = new SparkConf().setAppName("KafkaMessageBoardsCollector")
val ssc = new StreamingContext(sparkConf, Seconds(5))
ssc.checkpoint("checkpoint")
val topicMap = topics.split(",").map((_,numThreads.toInt)).toMap
val kafkaStream = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
@Component(
immediate = true,
service = ModelListener.class
)
public class MBMessagesModelListener extends BaseModelListener<MBMessage> {
@Override
public void onAfterCreate(MBMessage model)
throws ModelListenerException {
@migue
migue / liferay-kafka.java
Created October 13, 2014 21:28
Small example of how you can send create/update rating's events to a Kafka broker
@Component(
immediate = true,
service = ModelListener.class
)
public class RatingsEntryModelListener extends BaseModelListener<RatingsEntry> {
@Override
public void onAfterCreate(RatingsEntry model)
throws ModelListenerException {