Inlägg

Inlägg som Xenofonus har skrivit i forumet
Av Xenofonus

Pluggade Java och JS (react främst). Fick jobb som är i främst .NET framework (äldre C#), C++ 17 och ingen frontend alls förutom lite vanliga GUI-program ibland.

Jobbar även mycket med en jätterolig teknologi som heter XSLT

Av Xenofonus

Dag 6 kotin

fun run() { val input = File("src/input/day6.txt").readText() println(findNonRepearting(input, 4)) println(findNonRepearting(input, 14)) } private fun findNonRepearting(input: String, markerLength: Int): Int { val buffer: ArrayDeque<Char> = ArrayDeque() for((index, c) in input.withIndex()) { val indexOfAlreadyExisting = buffer.indexOf(c) if (indexOfAlreadyExisting != -1) { repeat(indexOfAlreadyExisting + 1) {buffer.removeFirst()} } buffer.addLast(c) if (buffer.size == markerLength) { return index + 1 } } throw IllegalArgumentException("Nu blev det tokigt") } //Annan lösning private fun findNonRepeartingAlternative(input: String, markerLength: Int): Int { val buffer: ArrayDeque<Char> = ArrayDeque() for((index, c) in input.withIndex()) { buffer.addLast(c) if(buffer.size == markerLength + 1) { buffer.removeFirst() } if(buffer.distinct().size >= markerLength) { return index + 1 } } throw IllegalArgumentException("Nu blev det tokigt") }

Dold text
Av Xenofonus

Dag 5 i Kotlin, nu börjar det bli fult på ögat.

data class Crate(val crateMarking: Char) data class CrateStack(val stack: ArrayDeque<Crate>) data class MoveInstruction(val numberToMove: Int, val target: Int, val destination: Int) fun run() { val input = File("src/input/day5.txt").readText() val inputParts = input.split("\r\n\r\n") val crates = inputParts[0] val instructions = inputParts[1] val rowsFromBottom = crates.split("\n").reversed() val numberOfStacks = rowsFromBottom.first().trim().last().digitToInt() val part1Lambda = {moves: Int, targetStack: CrateStack, destinationStack: CrateStack -> for (i in 1..moves) { destinationStack.stack.addFirst(targetStack.stack.removeFirst()) } } val part2Lambda = {moves: Int, targetStack: CrateStack, destinationStack: CrateStack -> val tempCrateStack = ArrayDeque<Crate>() for (i in 1..moves) { val topCrate = targetStack.stack.removeFirst() tempCrateStack.add(topCrate) } repeat(tempCrateStack.size) { destinationStack.stack.addFirst(tempCrateStack.removeLast()) } } println(solver(part1Lambda, instructions, getCrates(rowsFromBottom, numberOfStacks))) println(solver(part2Lambda, instructions, getCrates(rowsFromBottom, numberOfStacks))) } private fun getCrates(rowsFromBottom: List<String>, numberOfStacks: Int): List<CrateStack> { val stacks = IntRange(1, numberOfStacks).map { CrateStack(ArrayDeque()) } rowsFromBottom.drop(1).forEach { row -> for ((currentStack, i) in (1..row.length step 4).withIndex()) { val crateMarking = row[i] if (crateMarking.isLetter()) { val crate = Crate(crateMarking) stacks[currentStack].stack.addFirst(crate) } } } return stacks } private fun solver(lambda: (Int,CrateStack, CrateStack) -> Unit, moveInstructions: String, stacks:List<CrateStack>): String { buildMoveCrateInstruction(moveInstructions).forEach { instruction -> val targetStack = stacks[instruction.target - 1] val destinationStack = stacks[instruction.destination - 1] lambda(instruction.numberToMove, targetStack, destinationStack) } return stacks.map { it.stack.first().crateMarking }.toString() } private fun buildMoveCrateInstruction(moveInstructions: String): List<MoveInstruction> { val instructionParts = moveInstructions.split("\r\n").map { it.split(" ") } return instructionParts.map { MoveInstruction(it[1].toInt(), it[3].toInt(), it.last().toInt()) } }

Dold text
Av Xenofonus

Lite sen på bollen men nu har jag kommit ikapp, provar Kotlin i år.

Dag 1

val allElfCalories = File("src/input/day1.txt") .readText() .split("\r\n\r\n") .flatMap { it.split("\r\n").map { calorie -> calorie.toInt() } } .sortedDescending() println(allElfCalories.first()) println(allElfCalories.take(3).sum())

Dold text

Dag 2

private val part1 = mapOf( "A X" to 4, "A Y" to 8, "A Z" to 3, "B X" to 1, "B Y" to 5, "B Z" to 9, "C X" to 7, "C Y" to 2, "C Z" to 6 ) private val part2 = mapOf( "A X" to 3, "A Y" to 4, "A Z" to 8, "B X" to 1, "B Y" to 5, "B Z" to 9, "C X" to 2, "C Y" to 6, "C Z" to 7 ) fun run(){ val allPlayPoints = File("src/input/day2.txt") .readLines() val part1Answer = allPlayPoints.groupBy { it } .map { it.value.size * part1[it.key]!! } .sum() val part2Answer = allPlayPoints.groupBy { it } .map { it.value.size * part2[it.key]!! } .sum() println(part1Answer) println(part2Answer) }

Dold text

Dag 3

val rucksackContents = File("src/input/day3.txt") .readLines() val part1Answer = rucksackContents .flatMap { row -> val strFirstPartAsArray = row.substring(0, row.length / 2).toCharArray() val strSecondPartAsArray = row.substring(row.length/2).toCharArray() strFirstPartAsArray.intersect(strSecondPartAsArray.toSet()) .map { if (it.isLowerCase()) it.code - 96 else it.code - 38 } } val part2Answer = rucksackContents .chunked(3) .flatMap { chunk -> val firstElf = chunk[0].toCharArray() val secondElf = chunk[1].toCharArray() val thirdElf = chunk[2].toCharArray() firstElf.intersect(secondElf.toSet()).intersect(thirdElf.toSet()) .map { if (it.isLowerCase()) it.code - 96 else it.code - 38 } } println(part1Answer.sum()) println(part2Answer.sum())

Dold text

Dag 4

fun run() { val sectionPairs = File("src/input/day4.txt") .readLines() .map { row -> val pairs = row.split(",") Pair(buildSectionsArr(pairs[0]), buildSectionsArr(pairs[1])) } val part1Answer = sectionPairs.count { it.first.containsAll(it.second) || it.second.containsAll(it.first) } val part2Answer = sectionPairs.count { it.first.intersect(it.second).isNotEmpty() || it.second.intersect(it.first).isNotEmpty() } println(part1Answer) println(part2Answer) } private fun buildSectionsArr(sections: String): List<Int> { val startAndEnd = sections.split("-") val start = startAndEnd[0].toInt() val end = startAndEnd[1].toInt() return IntRange(start, end).toList() }

Dold text
Av Xenofonus
Skrivet av LillaAG:

Hej, vet att det är gamla inlägg osv. Min man jobbar redan inom IT som Applikationstekniker junior, men han är sugen på lära sig programmering och jobba som programmerare. Han tänkte plugga distans som erbjuds på komvux, jag vet inte om de kommer ge honom jobb oavsett han redan är på branschen. Är det någon som vet om de dugger med bara läsa programmering 1 och 2 på komvux?

Programmering 1 brukar vara kravet bara för att få söka till en utvecklarutbildning. Väldigt grundläggande grejer alltså

Så har väldigt svårt att se att någon skulle anställa någon med bara de kurser om de inte har gjort jättemycket coola grejer privat som de kan visa.

Av Xenofonus

Jobbet stänger av RDP, hjälp med val av KVM eller annan lösning.

Hej!

Hoppas det här är rätt forumdel, mods får gärna flytta annars.

Hemma så sitter jag vid min stationära dator och RDP:ar in i min jobblaptop som står i närheten för att jobba, på det här sättet kan jag sitta vid min vanliga dator med mina vanliga skärmar, mus och tangentbord. Nu har jobbet meddelat att de snart kommer låsa RDP-möjligheten på våra maskiner så behöver komma på nått sätt att komma runt problemet utan att behöva sitta vid bärbara eller koppla runt alla kablar varenda gång jag byter dator.

Min stationära dator är kopplad till en 1440p 144hz gamingskärm via displayport och en 1080p 60hz skärm på sidan via hdmi, via RDP kan båda dessa delas till jobblaptopen så när man kommer in ser det ut som att den också har 2 skärmar, det här verkar inte gå när jag tittar på liknande mjukvaror som AnyDesk och TeamViewer (ska faktiskt försöka prova också men misstänker de kommer vilja låsa såna möjligheter också).

Så alternativet jag kommer på är en KVM-switch som hanterar att åtminstone en av skärmarna är 1440p 144hz, det här visade sig vara riktigt dyrt och verkar som det blir problem ibland så därför rådfrågar jag här vad andra tycker?

Dessutom är jag lite osäker på hur jag skulle koppla 2 skärmkablar från en KVM till min laptop som bara har en hdmi-port? Jag kommer få en sån här docka av jobbet som jag kanske kan koppla skärmarna till och i sin tur den till laptopen via USB-C, men blir det för många kockar i köket då för att det lär ska funka?

Hoppas det gick att följa, tacksam för råd.

Av Xenofonus
Skrivet av paraziten:

Tack för tipsen.
Har beställt ”lunchboken”, ska börja dra igång nästa vecka :).

På Manning om du köper en bok så får du tillgång till deras "live book" eller nått sånt heter det, en hemsida med hela boken och lite funktioner för att hjälpa dig. Rekommenderar du använder den istället för den fysiska boken.

Av Xenofonus

Hej,

Finns så klart massa gratisresurser men jag tyckte den här boken var super när jag ville komma igång med Powershell, varje kapitel ska gå att ta sig igenom på runt en timme.

powershell in a month of lunches

Av Xenofonus

Självklart ska du prova 🙂 om du provat på redan och det kändes kul så sök nån utbildning och ta studieledigt bara, funkar det inte så går du tillbaka till jobbet.

Av Xenofonus
Skrivet av Pamudas:

Ja de har pushat mot MAUI ett bra tag inom Xamarin Forms. Blir lite same-same när det fortfarande är XAML som används med fokus på MVVM. Inte för att jag har något emot det - föredrar nästan denna Model-View binding men samtidigt är det skapligt irriterande med XML-formatet. Förmodligen en hel del kvar i bakgrunden från Xamarin i MAUI

Det är det utan tvekan, tycker man får byggfel på Xamarin.nånting.nånting ena och andra ofta när det går snett när man försöker bygga Android.

Av Xenofonus
Skrivet av Elgot:

Nu är jag långt från någon QML-guru, men fördelarna är väl ungefär de vanliga:

  • Qt fungerar på en lång rad plattformar medan C# fokuserar på windows. Från och med .Net core finns förvisso stöd även för linux och mac, men det gäller inte Windows Forms och WPF. Maui skall dock även fungera på mac. Sedan finns projekt som Blazor.

  • Att det är ett c++-ramverk gör det trivialt att interagera med c- och c++-bibliotek. Det går ju ofta att lösa i c# också, men det är omständligare.

  • Det är snabbt. Vanligtvis kanske inte en jätteviktig faktor, men för komplexa applikationer kan det vara märkbar skillnad.

Kan tillägga att MAUI äntligen blev släppt efter över ett års försening nu i veckan, så nu ska det gå att starta upp ett projekt i senaste versionen av Visual Studio 2022.

Av Xenofonus

Har nog klarat ut alla de där spelen, rolig quiz!

Av Xenofonus
Skrivet av heretic16:

Jag har också fått denna uppfattning att QT är väldigt....gammskola....
Men det kanske finns en anledning att använda teknik som är väldigt traditionell?

Jag menar, det finns väll en orsak varför banker använder Java Server Faces...och inte något modernt ramverk?

QT är väll gjort för att man ska kunna öppna projektet om 10 år och bara köra det?

Anledningen är väl främst att man har investerat väldigt mycket tid och pengar på sin lösning skriven med gammal teknik.

  • den täcker massa edge cases som uppstått som åren

  • den fungerar fortfarande adekvat

  • man kanske vill skriva om det men det prioriteras bort av ledningen

Nu gissar jag bara men jag tror inte banker bygger nya grejer i säg JSF, men de kanske har lite underhåll på äldre såna grejer.

Lite sidospår men ett modernt mönster är att ha en löst kopplad frontend som anropar resten av koden på nått sätt, så då kan man bygga en helt ny frontend utan att behöva skriva om allting som i äldre GUI-ramverk där allting är en stor sörja.

Av Xenofonus

MAUI är i preview ett litet tag till och det kanske kommer drag n drop förr eller senare. Jag tycker ändå XAML i MAUI har varit en otroligt smidig upplevelse att skriva för hand för mig som inte hållit på med XAML innan.

MAUI tillåter också att man använder blazor om jag förstått rätt så man kan tillämpa sina webbkunskaper för att göra GUIn.

QT har jag personligen bara sett i riktigt gamla legacygrejer vi har på jobbet som vi ska bygga om till webblösningar eller sätta end of life på, men det kan vara annorlunda på andra ställen så klart.

Av Xenofonus

Andra har varit inne på att skaffa en hobby. Jag brukade spela varje ledig stund men blev less som du, jag köpte en programmeringskurs på www.udemy.com och blev förälskad, numera har jag köpt massa andra slags kurser på udemy som inte har med utveckling att göra.

Så kolla in den om du hittar nått kul ämne som du vill lära dig mer om.

Av Xenofonus

Vet inte om det är det du menar exakt men du skulle kunna titta på Python tillsammans med biblioteket pandas.

Av Xenofonus

I React Native så skriver man ju Javascript (eller ännu bättre Typescript) så den biten är ju inte native, men sen så motsvaras alla komponenter i React Native av "riktiga" native-komponenter som skapas i bakgrunden som jag har förstått det så det blir ju lite en definitionsfråga om det är native eller inte.

Av Xenofonus
Skrivet av Larsp777:

Som jag förstått det kan man utveckla med React eller liknande på PC och sedan använda en Mac för att publicera. Fördelen är väl då att man kan utveckla både för iOS och Android med (mer eller mindre) samma kod.

Själv skaffade jag en iPad Pro nyligen. Tydligen ska man kunna utveckla i Swift på den. Finns väl vissa begränsningar. Vad jag förstår så ska det bli möjligt att publicera på App-store direkt från en iPad Pro (vet ej med andra iPads). Detta skulle då vara mycket enklare än att köra XCode och sedan skicka till App-store.

Det finns React Native tjänster som Expo EAS som gör att man inte behöver en mac någonstans om man använder sig utav dem. Du skapar ett applekonto som du ger dem tillgång till, sen så bygger du ioskoden på deras maskiner och det skickas vidare till apple. Nått i den stilen i a f.

Av Xenofonus

Gav upp på att försöka köpa en ny, har försökt i ett halvår men kan inte sitta och övervaka när de kommer in p g a jobbet. Nu köpte jag en på Tradera för 1500 överpris, så där finns det massor om ni vill ge en mindre slant extra.

Av Xenofonus

Jag använde LinkedIn så in i helvete när jag sökte LIA, jag mejlade hit och dit och fick som bäst löften att man skulle kolla och återkomma men det blev aldrig något tyvärr. Jag kanske skriver kasst eller nått, jag vet inte, men det funkade inte för mig.

Sedan fick jag 2 olika platser samtidigt via väldigt avlägsna bekanta när jag råkat nämna att jag sökte LIA-plats men inte hittat än. Så mitt tips är om du någon alls du känner att du hör med dem först.