endnu et forsøg med highcharts
Timer pr uge version 2016
Timer om ugen
Visualisering af diverse data
Nørd-nørd-nørd. Og den mere detaljerede beskrivelse er, af hensyn til min faglige selvpromovering, publiceret andetsteds. Så her napper vi bare en gauge på noget data der ligger i et Google Spreadsheet. Mest for lissom at have det liggende så jeg kan finde koden igen.
tea
Mere web automatisering – LinkedIn og Twitter
Hvordan får man automatisk trukket data ud om hvor mange følgere man har på Twitter?
Hvordan får man automatisk trukket data ud om hvor mange kontakter man har på LinkedIn?
<indsæt plidder-pladder om hvorfor det er vigtigt at have en tilstedeværelse på sociale medier og betydningen af hvor meget man har det og hvorfor nørder vil automatisere det ret kvantificerbare mål>
Med andre ord det skal ske automatisk. Hvordan?
Selenium to the rescue!
Og her er koden:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get(“http://dk.linkedin.com/in/cbknudsen”)
content = driver.find_element_by_class_name(‘member-connections’)
print content.text
driver.close()
driver = webdriver.Firefox()
driver.get(“http://twitter.com/nusse”)
content = driver.find_element_by_class_name(‘ProfileNav-item–followers’)
print content.text
driver.close()
Man indsætter naturligvis de rette links til rette sider. Det her er dem jeg interesserer mig for. Der skal naturligvis suppleres med noget der fanger tallene. Lige nu får jeg følgende ud:
247
forbindelser
FOLLOWERS
44
Og jeg kan godt nøjes med de to tal. Der så skal sendes til et eller andet sted, og plottes og sådan.
Rotoscoping
I ved godt hvad det er – I så det i A-HAs hit “take on me”.
Her er en katte-gif. I gamle dage var GIF bare et grafikformat. De kunne godt nok animeres, men det var lidt tungt, filer fyldte for meget og sådan. Og så blev de primært brugt til at lave hjemmesider der ikke var til at holde ud at se på.
I dag er de på mode igen – så meget at folk ikke tror at GIF også bare er et billedformat, men at de fuldstændigt er associeret med animerede gifs.
Men det var ikke det der var den egentlige pointe. Pointen var at lave en rotoscopet animeret gif.
Man starter med at finde en gif. Her er en god en, der fint illustrerer hvordan jeg har oplevet de sidste ca. 24 timer (nu er der kun fem kvarter til det er weekend. Yay!)
Og her er så resultatet af en rotoscoping:
Nå. Hvad gjorde jeg så?
- Jeg startede med at lede efter et billede der udtrykte min sindstilstand. Egentlig var det et hamsterhjul med en hamster jeg ledte efter. Men det passede sgu meget godt at katten havde fået skåret halen af (stakkels kat). Giffen blev downloaded.
- I IrfanView (enestående fantastisk program!!!) splittede jeg filen af i dens enkeltbilleder.
- Hvert enkelt billede fik følgende behandling:
- CTRL-E – vælg edgedetection. Det finder “kanterne” på billederne, der hvor der er overgange mellem forskellige farver.
- ALT-I (for image), vælg negative – alle kanaler.
- Gem.
- Egentlig burde hvert enkelt billede også konverteres til gråtoner, det ville få det endelige resultat til at fylde mindre. Det var jeg for doven til.
- Herefter skulle billederne samles til en animeret gif igen. Det skete på ImgFlip. Der er andre værktøjer. Jeg har bare ikke fået downloadet GIMP endnu, efter min forlovede har opgraderet computeren til windows something (10?). Så jeg hoppede på nettet og fandt noget.
- Vupti! Der er et vandmærke der irriterer og sådan. Og næste gang laver jeg øvelsen under punkt 3 i ImageMagick i stedet. Den kan nemlig automatiseres. Det kræver en særligt desillusioneret hjerne at sidde og gøre det i hånden for par-og-firs billeder.
Hep! Sådan.
Smartphone del IV – A New Hope
Da vi forlod den adskilte telefon sidst, var kredsløbet lavet. Drejeskiven skulle blot forbindes med det, og Arduinoen ligeså. (OK, jeg sprang selve fremstillingen af kredsløbet over. Det var en rask lille loddeøvelse med et strip-board, to modstande og tre to-polede skrueterminaler).
Nu lader vi så som om at kredsløb, Arduino og telefon er forbundet. Så skal der kodes. Som tidligere nævnt er der stjålet med arme og ben fra den her Instructable. Det er koden, med et par tilretninger, også.
int needToPrint = 0;
int count;
int in = 7;
int lastState = LOW;
int trueState = LOW;
long lastStateChangeTime = 0;
int cleared = 0;
// constants
int dialHasFinishedRotatingAfterMs = 100;
int debounceDelay = 10;
void setup()
{
Serial.begin(9600);
pinMode(in, INPUT);
}
void loop()
{
int reading = digitalRead(in);
if ((millis() – lastStateChangeTime) > dialHasFinishedRotatingAfterMs) {
// the dial isn’t being dialed, or has just finished being dialed.
if (needToPrint) {
// if it’s only just finished being dialed, we need to send the number down the serial
// line and reset the count. We mod the count by 10 because ‘0’ will send 10 pulses.
Serial.print(count % 10, DEC);
needToPrint = 0;
count = 0;
cleared = 0;
}
}
if (reading != lastState) {
lastStateChangeTime = millis();
}
if ((millis() – lastStateChangeTime) > debounceDelay) {
// debounce – this happens once it’s stablized
if (reading != trueState) {
// this means that the switch has either just gone from closed->open or vice versa.
trueState = reading;
if (trueState == HIGH) {
// increment the count of pulses if it’s gone high.
count++;
needToPrint = 1; // we’ll need to print this number (once the dial has finished rotating)
}
}
}
lastState = reading;
}
Det er rimeligt velkommenteret. Så det vil jeg ikke give mig i kast med.
Når programmet er kompileret og sendt til Arduinoen, åbner man sin Serialmonitor, drejer på skiven. Og så får man det drejede tal på skærmen. Fikst.
Star Trek – i kronologisk orden
Vi skulle have aftenen til at gå.
Foran flimmeren.
Jeg foreslog at vi skulle se DS9-afsnittet “Trials and Tribble-actions”.
Så fik vi lyst til at se hele Star Trek kanon igen. Det var en af vores bonding-øvelser da vi startede med at date. Nu er vi blevet forlovede. Sidst nåede vi at se det hele, inden vi tog til Star Trek con i London. Det er ikke sikkert vi når at se det hele inden vi skal giftes.
Men så skulle vi jo se det på en anden måde. Man kunne se det baglæns, men det jeg personligt elsker ved Star Trek, er at der er en kanon. At der er en historie der strækker sig fra 1947 (1937?) til 2378. Eller deromkring. Og at der sådan i det væsentlige er intern konsistens.
Der er også en tidslinie. Kalendersystemet er baseret på Stardates. Mange afsnit indledes med “Kaptajnens kævle, stjernedato 47474.2”, eller noget i den stil. Så… Hvorfor ikke se dem i stardate orden?
Det er så en udfordring. Indtil TNG var det der med stardates en lille smule rodet. Mildest talt. Og der er også uorden i TNG. Det er sådan set først fra omkring sæson 5-6 stykker af TNG, at der er orden i systemet. Og når vi når dertil. Ja, så er der overlap, fordi TNG og DS9 kører samtidig. Og DS9 og VOY overlapper også.
I ENT er der styr på det. Der bruger de så ikke stardates…
Den side de allesammen henviser til når man leder efter en liste over Star Trek i kronologisk stardate orden, er The Star Trek Chronology Project (TSTCP). Der er arbejdet gjort grundigt, der tages hensyn til de lange historiefortællinger. Der er styr på problemet med Tasha Yar, der, efter stardates at dømme, først er levende, så død, og så levende igen.
Men de har ikke TAS med! TAS betragtes af mange som non-kanon. Den er animeret og falder udenfor. Jeg mener (og derfor er det sandheden), at TAS må være en del af kanon. Hvis du møder en trekkie der ikke mener at TAS er kanon – så spørg hvad kaptajn Kirks fulde navn er. Hvis han siger James Tiberius Kirk, kan du råbe HA! og pege fingre af ham eller hende. I det der traditionelt betragtes som kanon, film og serier, eksklusive TAS, får vi at vide at han hedder James T. Kirk. Vores viden om hvad T’et står for, stammer fra TAS. Så deeet.
Anyway, jeg hygger mig lidt med at få skrabet kronologien, få indsat alle TAS-afsnit med stardate. Og så sorterer vi. Resultatet skal nok komme op her.
Og så skal vi have fundet ud af om vi vil se det i streng stardate orden, eller om vi vil følge de krumspring folkene bag TSTCP har lavet for at få enderne til at mødes.