Still alive.
Today: Removing YouTube embedding. I saw something cool in the AAMSX web,
so I decided to copy that. The idea was to use
Lite YouTube,
however… I got many errors regarding the CSP (Content Security Policy), as it
is set to null
and it was, again, including JavaScript. So fuck it.
So instead I did this Hugo shortcode:
{{- $videoId := trim (.Get 0) " " -}}
<youtube-thumb videoid="{{ $videoId }}">
<a href="https://www.youtube.com/watch?v={{ $videoId }}" target="_blank"><img
src="https://i.ytimg.com/vi/{{ $videoId }}/hqdefault.jpg" alt="YouTube
Link" style="border: #FFFFFF 4px double;"></a>
<p><center><small>Click to watch in YouTube (New tab)</small></center></p>
</youtube-thumb>
And if you put this in layouts/shortcodes/youtube-thumb.html
, you’ll be able
to use it as {{< youtube-thumb VIDEO_ID >}} and you’ll get the video thumbnail
in JPG and be able to click on it to watch it. The target="_blank"
makes it to
open a new tab. I kind of like it. It’s less functional compared to lite youtube
, but it works and it does not add JavaScript on our side.
Hello!
I’m still alive.
Just 2 years after our first edition of kicking out javascript
here we are again, reducing the size and processing time of the website.
Yes, it was pretty light but we can go FURTHER! Also we want this to be viewable
by obsolete browsers, of course. New things are not always progress when we can
simplify.
The only javascript that I had at this moment was the highlight.min.js
, a
javascript code in charge of handling code highlights. Some time ago I
discovered that Hugo has now included Chroma
for syntax highlighting. This is done in compile time and colored with just a
CSS file, so… I was up to try it.
Hello!
Probably nobody cares, but I have removed the share section (twitter + facbeook)
because it required to load 300kb for the icons plus random javascripts.
We want this to be light.
On the other hand I have removed the “last posts” from the index. This is
because it needed to recompile ALL the posts everytime because this list is
always updated. This way… only the last post needs to be compiled!
Hello!
Here is a fast note that might not be obvious. Beware with UDF types in PySpark.
from pyspark.sql.functions import udf
from pyspark.sql.types import IntegerType, FloatType
def very_fun(idk):
return(22)
def floating_fun(idk):
return(22.0)
df = sqlContext.createDataFrame(
[
(1, 'foo'),
(2, 'bar'),
],
['id', 'txt']
)
funfun_int = udf(very_fun, IntegerType())
funfun_float = udf(very_fun, FloatType())
floatingfun_int = udf(floating_fun, IntegerType())
floatingfun_float = udf(floating_fun, FloatType())
df = df.withColumn('funfun_int', funfun_int(df['id']))
df = df.withColumn('funfun_float', funfun_float(df['id']))
df = df.withColumn('floatingfun_int', floatingfun_int(df['id']))
df = df.withColumn('floatingfun_float', floatingfun_float(df['id']))
df.show()
And the result is not very amusing:
WHILE - FOR:
We usually use B
as counter. The main trick here is that DJNZ
decrements the
counter in B
and then checks, so that you don’t need to do two operations.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
LD C, 5
LD A, 0
LD B, 100
.NEXT2:
push BC
LD B, 10
.NEXT:
ADD A, C
DJNZ .NEXT
pop BC
DJNZ .NEXT2
|
To do: Improve text. Give examples. Explain stuff, dude…!
You need this package:
https://github.com/ellisonbg/ipyleaflet
To do: Intro, write the article better.
https://github.com/ipython-contrib/jupyter_contrib_nbextensions
Installing nbsextensions:
sudo pip install jupyter_contrib_nbextensions
Color customization:
Make file ~/.jupyter/custom/custom.css
try: https://github.com/powerpak/jupyter-dark-theme
Hello,
Do not assume anything. Never. Ever. Specially with SparkR (Apache Spark 2.1.0).
When using the gapply function, maybe you want to return the key to mark the results in a function as follows:
countRows <- function(key, values) {
df <- data.frame(key=key, nvalues=nrow(values))
return(df)
}
count <- gapplyCollect(data, "keyAttribute", countRows)
countRows <- function(key, values) {
df <- data.frame(key=key, nvalues=nrow(values))
return(df)
}
count <- gapplyCollect(data, "keyAttribute", countRows)
SURPRISE. You can’t.
You should get this error:
Error in match.names(clabs, names(xi)): names do not match previous names
Well, that’s weird. Why is this happening?