Pin-out för Ethernet-kablar
Den här länken ska jag spara för framtida bruk.
Den här länken ska jag spara för framtida bruk.
Kommer ni ihåg tiden då en webbsida som inte laddat färdigt ändå var fullt läsbar eftersom texten laddades först och bilderna därefter?
I kväll har Linn och jag sett sista avsnittet av Californication. Bra slut på en fantastiskt tv-serie.
Min vän Emil twittrade nyss följande:
Dagens lunchfilm för dig som programmerar PHP.
https://vimeo.com/115719437
Diskutera i grupp.
Jag fick en stor lust att, precis som Emil uppmanar till, diskutera det som visades i videon, och eftersom 140 tecken inte är en särskilt bra grogrund för nyanserad diskussion så tänkte jag blogga om det istället. (Just nu skriver jag på svenska för att i första hand diskutera med Emil. Eventuellt översätter jag det hela till engelska vid ett senare tillfälle om det visar sig vara intressant.)
Låt mig börja med att säga att jag är helt övertygad om att Adam Wathan som har gjort videon är en mycket mera kunnig PHP-utvecklare, och säkert programmerare i största allmänhet, än vad jag är. Jag är bara en glad amatör. Så jag vill inte påstå att han är okunnig, att hans lösning är idiotisk. Det är säkert jag som missförstått nåt men tills jag förstår mer så har jag några invändningar. Dessa kan sammanfattas under rubriken:
Varför denna refaktorisering1? Vad vinner vi på den? Blir koden mycket snabbare att exekvera? Blir den lättare att uppdatera?
Jag skulle påstå att den definitivt blir svårare att förstå. Kanske inte för den som redan programmerar på avancerad nivå, och visst ”det är lätt om en kan”, men omstruktureringen fick koden att gå från något som var fullt läsbart för den som är en nybörjare inom programmering till totalt obegripligt för den inte redan invigde.
”Switch”-statements och loopar kanske inte är så snygga att titta på men det är glasklart vad de gör. Jag skulle kunna visa den ursprungliga koden för de 12-åringar som vi (Emil, jag och andra) på fritiden undervisar i grundläggande programmering och annat och barnen skulle ha förstått allt redan under första lektionen. De refaktoriserade resultatet skulle kräva många lektioner för att förstå, inklusive en lektion i ett tredjepartsramverk eftersom den vanliga array-datatypen i PHP inte anses vara bra nog.2
Vi har bytt bort lättförståelig kod, så vad fick vi istället?3 Adam Wathan påstår att han gör koden mera ”simple” och ”clean” men jag förstår inte på vilket sätt det är sant. Det blev mindre kod men är det verkligen samma sak som ”simple” och ”clean”. Det är säkert Objective C-programmeraren i mig som talar men jag är ett fan av kod som är tydlig och lättförståelig, även om det innebär att den är längre och mera mångordig än vad som vore nödvändigt för samma funktion.
(Also linked from Twitter.)

(Also on Instagram.)
annielinn liked this photo on instagram.com.
jonas_tunander liked this photo on instagram.com.
erikbrattlof liked this photo on instagram.com.
sanna.hanson liked this photo on instagram.com.
mikaeljorhult liked this photo on instagram.com.
acebowler66 liked this photo on instagram.com.
ejme18 liked this photo on instagram.com.
larssonmikaela liked this photo on instagram.com.
annmarieckman liked this photo on instagram.com.
lingsellskan liked this photo on instagram.com.
Haha! ??
Jäklar va rätt!!
The midi-chlorians are high with this one!
Hon kan hon?
@ludvig.hager Midi-vadå? Nu förstår jag inte. Det där lät som nåt från en film som inte finns. Vad jag vet så har midi-chlorians aldrig nämnts i någon av de fyra Star Wars-filmerna.
Jar Wars, Episode I. The Phantom Movie.
@ludvig.hager Det ringer ingen klocka. Är det nån sorts fan fiction? Ett misslyckat försök att fantisera ihop något som hände innan Star Wars?
Nu är vi på plats i huset. ”Vi” är jag, Linn, Iris och min bror som är här och hjälper oss med flytten. Vi har kört ett rejält lass hit till huset idag så vi har allt vi behöver men just nu är det lite svårt att veta var någonting är. Fyrtio kartonger betyder att det finns gott om ställen att leta på. :)
Vi har även byggt ihop ett gäng möbler och har massor kvar och i morgon ska vi hämta ännu mer prylar och förhoppningsvis ska jag även få fart på det trådlösa nätverket i huset.
Det kan även vara så att vi så småningom får roa oss med att klättra på taket och sätta upp en tv-antenn. En av de många tjusningarna med ett helt nytt hus är ju att det inte finns några antenner eller nåt på det. Fiber finns draget in i huset och det är den vägen vi kommer konsumera merparten av den tv vi tittar på. Jag vill inte skaffa någon box och/eller något abonnemang från någon kabeltv-leverantör men jag vill att vi om möjligt ska kunna titta på sändningar från SVT och TV4, även om internetuppkopplingen av någon anledning slutar fungera. Så därav en vanlig tv-antenn för marksänd digital-tv. Stay tuned för mer av det äventyret. (I’ll see myself out.)
Hursomhelst så känns det väldigt, väldigt bra att sitta vid köksbordet, visserligen ett väldigt rörigt köksbord men ändå, i sitt eget hus och njuta av en öl och av tystnaden. Ingen vältrafikerad bilväg som stör, inga grannar som låter genom väggarna som vi delar. Ingen vändplan där raggarbilarna står och brötar ut bas. Bara värmepannan som surrar i bakgrunden. (Det kan vara så att jag behöver köpa en tjockare dörr till tvättstugan där pannan sitter, annars kanske jag så småningom blir sinnessjuk.)
Det är mycket kvar att göra innan allt är klart inne i huset och trädgården är en enda ler- och stenhög just nu men det känns att det kommer bli väldigt bra och jag trivs redan.
I natt sover vi i lägenheten för sista gången. I morgon kväll börjar vårt nya äventyr i huset.
(Also on Twitter.)
Josefin liked this on twitter.com.
Patrik Björn liked this on twitter.com.
Enligt IMDB så kommer Rogue One: A Star Wars Story ha premiär på min födelsedag, precis som The Force Awakens hade. Fin tradition i så fall.
Ska man ha skärmad eller oskärmad nätverkskabel (CAT-5e) i en villa? Finns det några nackdelar (förutom pris) med skärmad?
(Also on Twitter.)
@synvila skärmad är rätt överdrivet om du inte ska ha buntvis med kabel i kanaler. Handlar ju om att ta bort störningar
@grenfeldt Nej, buntvis ska jag inte ha. Däremot är det till en fast installation så jag tänker att det kanske är bra att ta i lite extra …
Wow, that’s an unwieldy title!
Anyway, during some spare time today I’ve struggled with something in Objective C and Cocoa Touch that I’ve been struggling with before. When a UITextField in an iOS app becomes ”active”, allowing the user to enter text, almost half of the screen gets covered by the software keyboard. That’s all well and good, but that keyboard is likely to obstruct the view of something, maybe even of the UITextField in question and that’s not good.
To avoid this problem, I the developer am supposed to move or resize (or something) the view. There are multiple questions about this on StackOverflow and multiple answers. After some digging and a lot of trial and error I came up with a solution that differed at least somewhat from all other solutions that I could find. As far as I can tell my solution works and it’s pretty short in terms of code, which I like.
I don’t know, maybe it’s a bad solution. If so, please let me know.
First, embed all the views that need to move inside a UIScrollView.
In my case I have multiple UITextFields that needs to move so I placed them all inside a UIScrollView. I then added the following property to my ViewController:
|
1 2 |
@property (strong, nonatomic) UITextField *activeTextField; |
This property is updated on textFieldShouldBeginEditing like so:
|
1 2 3 4 5 |
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { self.activeTextField = textField; return true; } |
Then , in my viewDidLoad I added the following two observers:
|
1 2 3 |
[ [ NSNotificationCenter defaultCenter ] addObserver:self selector:@selector( keyboardDidShow: ) name:UIKeyboardDidShowNotification object:nil ]; [ [ NSNotificationCenter defaultCenter ] addObserver:self selector:@selector( keyboardDidHide ) name:UIKeyboardDidHideNotification object:nil ]; |
These will trigger the methods keyboardDidShow and keyboardDidHide when the keyboard appears and disappears respectively. It is in those methods that ”the magic” happens:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
- (void)keyboardDidShow:( NSNotification *)notification { // Find out the frame of the keyboard NSDictionary *userInfo = [notification userInfo]; CGRect keyboardFrame = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; // Calculate how heigh of an available content area we have now by // subtracting the keyboards height from the height of the main view. NSInteger heightOfAvailableContentArea = self.view.frame.size.height - keyboardFrame.size.height; // Make a point with a y that's the y of the activeTextField minus half // the height of the available content area and then scroll the // UIScrollView to this position. CGPoint scrollPoint = CGPointMake( 0, self.activeTextField.frame.origin.y - heightOfAvailableContentArea / 2 ); [ self.scrollView setContentOffset:scrollPoint animated:YES ]; } - (void)keyboardDidHide { // Return the UIScrollView to 0 position. CGPoint scrollPoint = CGPointMake( 0, 0 ); [ self.scrollView setContentOffset:scrollPoint animated:YES ]; } |
As I said, this works but it’s very possible that it’s a bad solution. If you like the solution, feel free to use it. If you think it’s bad, please tell me so and why so that I can learn and become a better programmer.
Replies and comments
blog.henrikcarlsson.se
4 maj, 2016 00:02blog.henrikcarlsson.se mentioned this on blog.henrikcarlsson.se.