Skip to content

Instantly share code, notes, and snippets.

View Leonti's full-sized avatar

Leonti Bielski Leonti

View GitHub Profile
@Leonti
Leonti / SchemaToCaseClass
Last active April 2, 2019 22:29
Generate case classes for Spark DataFrame from a schema
object SchemaToCaseClass {
import org.apache.spark.sql.types._
trait Field
case class FlatField(name: String, t: String, isNullable: Boolean) extends Field
case class CaseClass(name: String, fields: List[Field], isNullable: Boolean) extends Field
case class ArrayClass(name: String, field: Field, isNullable: Boolean) extends Field
case class PrintField(name: String, typeName: String, isOptional: Boolean)
case class PrintClass(name: String, fields: List[PrintField])
{"event":{"generic":{"message":"Ir sensor message"}},"time":1580108867703}
{"event":{"generic":{"message":"Gyro sensor message"}},"time":1580108867703}
{"event":{"lidar":{"scan_points":[{"angle_z_q14":59869,"dist_mm_q2":5992,"quality":188,"flag":1},{"angle_z_q14":49675,"dist_mm_q2":5976,"quality":188,"flag":0},{"angle_z_q14":40777,"dist_mm_q2":0,"quality":0,"flag":0},{"angle_z_q14":30583,"dist_mm_q2":0,"quality":0,"flag":0},{"angle_z_q14":19091,"dist_mm_q2":6368,"quality":188,"flag":0},{"angle_z_q14":8897,"dist_mm_q2":6400,"quality":188,"flag":0},{"angle_z_q14":64238,"dist_mm_q2":6100,"quality":188,"flag":0},{"angle_z_q14":54044,"dist_mm_q2":6212,"quality":188,"flag":0},{"angle_z_q14":43849,"dist_mm_q2":6388,"quality":188,"flag":0},{"angle_z_q14":33655,"dist_mm_q2":6324,"quality":188,"flag":0},{"angle_z_q14":23460,"dist_mm_q2":5916,"quality":188,"flag":0},{"angle_z_q14":13289,"dist_mm_q2":5856,"quality":188,"flag":0},{"angle_z_q14":3094,"dist_mm_q2":5896,"quality":188,"flag":0},{"angle_z_q14":59710,"dist_mm_q
{"event":{"lidar":{"scan_points":[{"angle":1.6885294,"distance":1.69,"quality":188,"is_sync":true,"is_valid":true},{"angle":0.6980572,"distance":0.0,"quality":0,"is_sync":false,"is_valid":false},{"angle":5.783491,"distance":0.45,"quality":188,"is_sync":false,"is_valid":true},{"angle":4.6229386,"distance":1.481,"quality":188,"is_sync":false,"is_valid":true},{"angle":3.5059133,"distance":1.486,"quality":188,"is_sync":false,"is_valid":true},{"angle":2.3888874,"distance":1.479,"quality":188,"is_sync":false,"is_valid":true},{"angle":1.2740669,"distance":1.464,"quality":188,"is_sync":false,"is_valid":true},{"angle":0.15704128,"distance":1.441,"quality":188,"is_sync":false,"is_valid":true},{"angle":5.320996,"distance":1.524,"quality":188,"is_sync":false,"is_valid":true},{"angle":4.201861,"distance":1.7,"quality":188,"is_sync":false,"is_valid":true},{"angle":3.0870407,"distance":1.535,"quality":188,"is_sync":false,"is_valid":true},{"angle":1.97222,"distance":1.388,"quality":188,"is_sync":false,"is_valid":true},{"angl
{"event":{"lidar":{"scan_points":[{"angle":6.141292,"distance":1.0495,"quality":60,"is_sync":true,"is_valid":true},{"angle":6.165836,"distance":0.95025,"quality":60,"is_sync":false,"is_valid":true},{"angle":6.1903796,"distance":0.8675,"quality":60,"is_sync":false,"is_valid":true},{"angle":6.2149234,"distance":0.803,"quality":60,"is_sync":false,"is_valid":true},{"angle":6.2392755,"distance":0.746,"quality":60,"is_sync":false,"is_valid":true},{"angle":6.2638187,"distance":0.69725,"quality":60,"is_sync":false,"is_valid":true},{"angle":0.00680704,"distance":0.65875,"quality":60,"is_sync":false,"is_valid":true},{"angle":0.029720878,"distance":0.6185,"quality":60,"is_sync":false,"is_valid":true},{"angle":0.055031564,"distance":0.587,"quality":60,"is_sync":false,"is_valid":true},{"angle":0.07852064,"distance":0.55725,"quality":60,"is_sync":false,"is_valid":true},{"angle":0.10383133,"distance":0.53175,"quality":60,"is_sync":false,"is_valid":true},{"angle":0.12645754,"distance":0.508,"quality":60,"is_sync":false,"is_v
S3BucketLogs:
Type: AWS::S3::Bucket
DeletionPolicy: Delete
Properties:
AccessControl: LogDeliveryWrite
BucketName: !Sub '${AWS::StackName}-logs'
S3BucketRoot:
Type: AWS::S3::Bucket
DeletionPolicy: Delete
CertificateManagerCertificate:
Type: AWS::CertificateManager::Certificate
Properties:
DomainName: !Ref DomainName
SubjectAlternativeNames:
- !Sub www.${DomainName}
ValidationMethod: DNS
CloudFrontDistribution:
Type: AWS::CloudFront::Distribution
Properties:
DistributionConfig:
Aliases:
- !Ref DomainName
CustomErrorResponses:
- ErrorCachingMinTTL: 60
ErrorCode: 404
ResponseCode: 200
S3BucketWWW:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Sub '${AWS::StackName}-www-redirect'
AccessControl: PublicRead
WebsiteConfiguration:
RedirectAllRequestsTo:
HostName: !Sub ${DomainName}
Protocol: https
Route53RecordSetGroup:
Type: AWS::Route53::RecordSetGroup
Properties:
HostedZoneName: !Sub '${DomainName}.'
RecordSets:
- Name: !Ref DomainName
Type: A
AliasTarget:
DNSName: !GetAtt CloudFrontDistribution.DomainName
EvaluateTargetHealth: false
@Leonti
Leonti / startup.sh
Created September 4, 2020 12:28
show-me-webcam satartup
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.19.113 (leonti@leonti-ubuntu) (gcc version 8.4.0 (Buildroot 2020.02.3)) #1 Thu Sep 3 21:28:39 AEST 2020
[ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[ 0.000000] OF: fdt: Machine model: Raspberry Pi Zero Rev 1.3
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] cma: Reserved 8 MiB at 0x19000000
[ 0.000000] random: get_random_bytes called from start_kernel+0x90/0x49c with crng_init=0
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 104545
[ 0.000000] Kernel command line: coherent_pool=1M bcm2708_fb.fbwidth=720 bcm2708_fb.fbheight=480 bcm2708_fb.fbswap=1 smsc95xx.macaddr=B8:27:EB:E3:2A:A5 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 root=/dev/mmc