Follow along with the video below to see how to install our site as a web app on your home screen.
Huomio: This feature may not be available in some browsers.
Miten saisin kätevästi tyypit muuttujasta kuten
JavaScript:Let variable = {} variable.something = 566 Typeof variable // ei toimi vaan tyyppi on {}
console.log(typeof {});
let variable = {}
variable.something = 566
console.log(typeof variable);
console.log(typeof variable.something);
-->
> "object"
> "object"
> "number"
Tai siis haluaisin että typescriptin autocomplete toimisi noiden operaatioiden jälkeen.Tuo variable tuossa on objekti, siellä voi siis olla useita erityyppisiä arvoja (jotka voinee halutessaan käydä läpi)?
JavaScript:console.log(typeof {}); let variable = {} variable.something = 566 console.log(typeof variable); console.log(typeof variable.something); --> > "object" > "object" > "number"
Esim. variable. Ehdottaa tuon something sen jälkeen kun se on aikaisemmin määritelty numeroksi.
const user: { name: string; age?: number } = { name: 'Jarppi' }
user.age = 65 // Autocomplete toimii
const user2 = { name: 'Jarppi' }
user2.name = 'Pete' // Autocomplete toimii yhä. Objektiliteraali edellisellä rivillä määritteli tyypin.
Tai siis haluaisin että typescriptin autocomplete toimisi noiden operaatioiden jälkeen.
Esim. variable. Ehdottaa tuon something sen jälkeen kun se on aikaisemmin määritelty numeroksi.
EDIT: How to dynamically assign properties to an object in TypeScript - LogRocket Blog
Tämä tuntuu vastaavaan ongelmaani.
Kerrotko vähän tarkemmin, mitä teet.
Normaalisti sun pitää määritellä muuttujan variable tyyppi. Sitten kun sen olet määritellyt, niin autocompletion toimii. Esim:
JavaScript:const user: { name: string; age?: number } = { name: 'Jarppi' } user.age = 65 // Autocomplete toimii const user2 = { name: 'Jarppi' } user2.name = 'Pete' // Autocomplete toimii yhä. Objektiliteraali edellisellä rivillä määritteli tyypin.
Tuossa TS tietää, mitä propertyjä userilla on ja osaa niitä tarjota. Sä taas loit muuttujan, jolla ei ole propertyjä, vaan on tyhjä objekti. TS herjaa jos yrität mitään muuttaa.
PS. Älä käytä let-avinsanaa. Vaan const on tuossa oikea. Se objekti pysyy vakiona vaikka muutat sen propertyjä.
const automatic = {};
questions.forEach((e) => {
if (e.questionType === "yesOrNo") {
const yesOrNo = filterSensitive.map((i) => i[e.questionDB]);
automatic[e.questionDB] = {
yes: yesOrNo.filter((i) => i === true).length,
no: yesOrNo.filter((i) => i === false).length,
};
} }
select
id
, case
when group = '1'
then StartDate
else EndDate
end as "Date"
from
Company
where
date > 1.1.2023??
SQL. Miten laitetaan where ehto case rakenteelle silloin jos siinä valitaan useita sarakkeita?
Koodi:select id , case when group = '1' then StartDate else EndDate end as "Date" from Company where date > 1.1.2023??
select
id
, case
when group = '1'
then StartDate
else EndDate
end as "Date"
from
Company
where
case
when group = '1'
then StartDate
else EndDate
end > cast('1.1.2023' as date)
select
id,
"Date"
from (
select
id
, case
when group = '1'
then StartDate
else EndDate
end as "Date"
from
Company
) d
where "Date" > cast('' as date)
Kiitos! Kenttien nimet eivät ole todellisia nimiä, keksin esimerkin vuoksi ne.Koko case pitää olla ehdossa:
Koodi:select id , case when group = '1' then StartDate else EndDate end as "Date" from Company where case when group = '1' then StartDate else EndDate end > cast('1.1.2023' as date)
tai select from select:
Koodi:select id, "Date" from ( select id , case when group = '1' then StartDate else EndDate end as "Date" from Company ) d where "Date" > cast('' as date)
Vaihtoehdossa 2 on monissa kannoissa se ongelma että ensin tehdään kysely koko massalle -> tulos "temp" tauluun ja vasta sen jälkeen rivien filtteri. Riippuu optimoijasta ja kannasta.
Vähän offtopic:
Kannattaa myös opetella välttämään yleisimpiä varattuja sanoja kuten tässä Date sarakkeen nimenä. Helpottaa elämää varsinkin jos joskus joutuu käyttämään muita kantoja.
Oletan että StartDate ja EndDate datatyyppi on oikeasti date/datetime/timestamp, silloin kannattaa aina vakioarvo muuttaa oikeaan datatyyppiin eikä antaa kannan tehdä oletusmuunnoksia (esimerkkinä mssql jossa varchar = int vertailussa yritetään yleensä muuttaa varchar -> int eikä toisinpäin).
Ilmeisesti SQL:ssä ei saisi mielellään käyttää SELECT * , vaan pitäisi vaan valita kaikki columnit manuaalisesti. Ongelma on että minulla on noin 50 columnia, ja osa on relaatiota joita käytän kuten sukupuolen mukaan valinta. Olen suodattanut arat columnit kuten id:t vain laiskasti spread syntaxilla nodessa ([id ...rest]).
Onko vinkkejä miten kannattaisi toimia? Melkein kaikissa columneissa on myös joku constraint. Postgres tukee json:ia mutta en tiedä saako sinne noita constraintteja properteille, ja miten relaatioiden hanskaaminen niillä sitten onnistuu.
Tuossahan se oikeastaan edellä tuli, mutta hieman monisanaisemmin, niin kolmonen ja sitä edeltävä vertailuoperaattori tuolla for-luuppirakenteen sisällä kertoo nykyisellään ylärajan, montako kertaa luupin sisällä olevaa rakennetta toistetaan.'dart:io';
main() {
print('Syötä yläraja.');
var syote = int.parse(stdin.readLineSync());
for (var i = 0; i <= 3; i++) {
print('$i');
}
}
Hyvää iltaa kaikki osaavat Yllä Fitechin tehtävä jolla tulostetaan luvut nollasta kolmeen, kun ylärajaksi syötetään kolme. Minun pitäisi saada tuosta aikaiseksi tulostus jossa luvut olisivat nollasta kahteen kun ylärajaksi tulisi 2 ja jos kirjoitetaan luvuksi - 1 niin ohjelma ei tulosta mitään.
Tämä on ihan alkeita, mutta olen jumahtanut tähän tehtävään enkä löydä ratkaisua.
Saako joku kiinni ajatuksesta mitä tarkoitan?
Kieltä tuntematta tarttet tohon loopiin sen user input ylärajan ei kiinteetä 3 a toivottavasti auttaa saamaan ideasta kiinni
Tuossahan se oikeastaan edellä tuli, mutta hieman monisanaisemmin, niin kolmonen ja sitä edeltävä vertailuoperaattori tuolla for-luuppirakenteen sisällä kertoo nykyisellään ylärajan, montako kertaa luupin sisällä olevaa rakennetta toistetaan.
Syote-niminen muuttuja on vaan luku, joka luetaan käyttäjältä ja ehkä vielä hyvä ymmärtää, että käytännössä tuossa siis luetaan merkkijonotyyppinen muuttuja käyttäjältä, joka muunnetaan erikseen luvuksi. Ja jos menet antamaan ohjelmaa testatessa syötteeksi kirjaimen tai erikoismerkin, jotka eivät ole kelvollisia lukuja, joita voisi kääntää merkkijonosta luvuksi, niin olettaisin ohjelman kippaavan Dartillakin. Kannattaa varmaan kokeilla tuokin, että millainen virheilmoitus tulee.
Mutta voit siis korvata tuon numero kolmosen em. muuttujalla, jolloin tuon for-luuppirakenteen yläraja tuleekin siitä luvusta, joka ohjelmalle syötetään.
Kannattanee tsekata vielä ajatuksella materiaalit ja mitä niissä sanotaan muuttujista ja toistolausekkeista.
Hyvää iltaa kaikki osaavat Yllä Fitechin tehtävä jolla tulostetaan luvut nollasta kolmeen, kun ylärajaksi syötetään kolme. Minun pitäisi saada tuosta aikaiseksi tulostus jossa luvut olisivat nollasta kahteen kun ylärajaksi tulisi 2 ja jos kirjoitetaan luvuksi - 1 niin ohjelma ei tulosta mitään.
Tämä on ihan alkeita, mutta olen jumahtanut tähän tehtävään enkä löydä ratkaisua.
Saako joku kiinni ajatuksesta mitä tarkoitan?
import 'dart:io';
void main() {
print('Syötä yläraja.');
String syote = stdin.readLineSync() ?? '';
int ylaraja = int.tryParse(syote) ?? 0;
for (var i = 0; i <= ylaraja; i++) {
print('$i');
}
}
import 'dart:io';
void prettyPrint(String msg, [String type = 'none']) {
if (type == 'info') {
print('\x1B[32m$msg\x1B[0m');
} else if (type == 'error') {
print('\x1B[31m$msg\x1B[0m');
} else {
print(msg);
}
}
String getInput() {
prettyPrint('Enter limit:');
String input = stdin.readLineSync() ?? '';
return input;
}
int getLimitAsInt(String input) {
int? limit;
try {
limit = int.parse(input);
} on FormatException {
prettyPrint('Please enter a numeric value!', 'error');
} finally {
return limit ?? -1;
}
}
void main() {
String input = getInput();
int top = getLimitAsInt(input);
for (int i = 0; i <= top; ++i) {
prettyPrint('$i', 'info');
}
}
Päädyin kokeilemaan Dartia elämäni ensimmäistä kertaa (pitänyt jo kauan ottaa Flutter haltuun). Koodistani tuli hieman eri näköistä, joten postaan sen tähän evaluoitavaksi sekä @Dellu että muun raadin toimesta (online Dart compiler -versio):
JavaScript:import 'dart:io'; void main() { print('Syötä yläraja.'); String syote = stdin.readLineSync() ?? ''; int ylaraja = int.tryParse(syote) ?? 0; for (var i = 0; i <= ylaraja; i++) { print('$i'); } }
EDIT: Vajosin syvemmälle kaninkoloon, kun alkoi kinostella. Over engineerasin, jotta pääsi testailemaan vähän laajemmaltikin. Nyt näyttäisi tältä:
JavaScript:import 'dart:io'; void prettyPrint(String msg, [String type = 'none']) { if (type == 'info') { print('\x1B[32m$msg\x1B[0m'); } else if (type == 'error') { print('\x1B[31m$msg\x1B[0m'); } else { print(msg); } } String getInput() { prettyPrint('Enter limit:'); String input = stdin.readLineSync() ?? ''; return input; } int getLimitAsInt(String input) { int? limit; try { limit = int.parse(input); } on FormatException { prettyPrint('Please enter a numeric value!', 'error'); } finally { return limit ?? -1; } } void main() { String input = getInput(); int top = getLimitAsInt(input); for (int i = 0; i <= top; ++i) { prettyPrint('$i', 'info'); } }
Suosittelen kaikille simppeleiden koodausongelmien äärellä painiville ChatGPT:n käyttöä. Tässä esimerkki @Dellu :n ongelman ratkaisusta, jos se olisi syötetty ChatGPT:hen.
Kysymys:
Vastaus:
Jatkokysymys ja vastaus:
Tuosta on ollut minulle valtavasti hyötyä, jos jotain sattuu unohtamaan, tai ei hahmota täysin mitä koodissa tapahtuu jne. Toki tärkeintä on käyttää sitä hyödyksi, jotta voi oppia tekemään itse.
@Dellu Ihan vain näin lisäyksenä vielä, että useinhan ongelmat ratkeavat myös sillä, että nukkuu yön ylitse ja yrittää seuraavana päivänä ratkoa sen. Vaikka ongelma tuntuisi nyt siltä ettei sitä mitenkään voi itse tajuta niin kyllä sen tajuaa. ChatGPT on kyllä tosi hyvä kaveri näihin, mutta suosittelisin alkeiden opettelussa yrittämään ratkoa ongelmia itse niin paljon kuin mahdollista. Esim. tuon ongelman olisit varmasti hiffannut sillä, että olisit ns. debugannut koodia rivi riviltä itse miettimällä mitä milläkin rivillä tapahtuu, esim.:
print('Syötä yläraja.'); // tulostetaan 'Syötä yläraja'
var syote = int.parse(stdin.readLineSync()); // asetetaan muuttujaan 'syote' käyttäjän antama tieto
for (var i = 0; i <= 3; i++) { // tulostetaan muuttuja 'i' ja kasvatetaan sitä joka kierroksella niin kauan, että se ei ole enää alle kolme
print('$i');
Sitten kun pidät mielessä, että jos asetat muuttujaan jotain niin sitä muuttujaa on pakko käyttää (kärjistetysti ainakin) uudestaan jossain kohtaa koodia ennen kuin tehtävä on valmis, niin olisit varmasti keksinyt ongelman. IDE:issä on yleensä työkalukin tällaiseen rivi-riviltä koodin läpikäymiseen, jonka avulla on helpompi pysyä kärryillä mitä koodissa tapahtuu kun sen pituus kasvaa. Tämä debuggaaminen tulee todennäköisesti kurssilla myöhemmin muodossa tai toisessa aiheeksi.
Mutta juu ChatGPT on tosi hyvä, kun se osaa kertoa mitä pitää muuttaa ja miksi. En siis tiedä vaikka olisit tämän kanssa jo viikon verran tuskaillut ja käynyt suurennuslasilla lävitse, mutta ihan vain näin vinkkinä kun vielä muistan etäisesti omat alkeiden opetteluajat. Mutta aina kannattaa kysyä apua, ikävintä on jäädä jumiin yhteen tehtävään, katoaa vain motivaatio helposti sillä tavalla.
Juu, se mitä itse olen kokeillut ChatGPT:tä niin vaikka koodi olisikin toimivaa niin siinä saattaa olla jotain todella hulluja juttuja joilla ei ole mitään merkitystä lopputuloksen kannalta tai sitten generoitu koodi on muuten vaan jotenkin käsittämättömän monimutkaista vaikka helpoin ratkaisu olisi huomattavasti simppelimpi.ChatGPT:tä käyttäessä on hyvä myös tiedostaa ettei se aina anna oikeaa vastausta. Pahimmillaan sen antamat koodiratkaisut ovat suorastaan pielessä ja joskus sisältävät virheitä jotka haittaavat vain tietyissä tapauksissa. Ei siis kannata suoraan ostaa sen selityksiä, vaan perehtyä niihin kriittisesti niin hyvin kuin oma osaaminen antaa periksi.
Chatgpt vastaus:Pitäisi saada uudelleen nimettyä tiedostot hakemistosta ja alihakemistoista. Tiedostoista pitäisi muuttaa non-asciit ascii merkeiksi.
Tyyliin àèìòù -> aeiou
Löytyisikö joltain valmista PowerShell scriptiä tuohon?
Ihan pseudona ääneen lukien voisit asiaa käydä rivi riviltä läpi, sillä sitenhän se konekin periaatteessa toimii.Minä täällä taas kysyn neuvoa.. Ohessa on tehtävä jota minun pitäisi muokata. Ongelmani on se etten oikein ymmärrä mihin "väliin" laitan muokkauksen niin, että saisin tulostettua tekstin "Keskiarvoa ei voi laskea." Tehtävä on tässä kokonaisuudessaan ilman omaa muokkaustani (muokkasin niin, että jos syötetään pelkkä 0 niin tulostuu "Syötettyjen lukujen summa on 0." ). Käyttäisin if ja else toimintoja mutta nyt en oikein ymmärrä, että mihin "väliin"? Saako tästä joku kiinni? Ja jos mitenkään on aikaa ja kiinnostusta vähän avata samalla sitä kuinka niin oppisin niin että jää mieleen Kiitos jo etukäteen!
" Tehtäväpohjassa on mukana yllä esitelty ohjelma, jolla lasketaan syötettyjen lukujen summa. Ohjelmaa on muokattu siten, että se laskee myös syötettyjen lukujen keskiarvon. Keskiarvoa ei voi kuitenkaan laskea tilanteessa, missä lukuja ei ole lainkaan, sillä lukua ei saa jakaa nollalla. Muokkaa ohjelmaa siten, että keskiarvo lasketaan ja tulostetaan vain mikäli käyttäjä syöttää vähintään yhden luvun -- jos keskiarvoa ei voi laskea, ohjelman tulee tulostaa Keskiarvoa ei voi laskea.. "
import 'dart:io';
main() {
print('Kuinka monta lukua luetaan?');
var lukuja = int.parse(stdin.readLineSync());
var summa = 0;
for (int i = 0; i < lukuja; i++) {
print('Syötä luku.');
var luku = int.parse(stdin.readLineSync());
summa = summa + luku;
}
print('Syötettyjen lukujen summa on $summa');
var keskiarvo = summa / lukuja;
print('Syötettyjen lukujen keskiarvo on $keskiarvo');
}
Ei sinne iffin sisään kannata mennä ollenkaan, jos käyttäjä on sitä mieltä ettei lukuja lasketa (eli antaa luvun 0 tai vähemmän heti alussa). Silloin koko for-loopia ei tarvita mihinkään. @Dellu sinullahan on tuossa tehtävänannossa jo käytännössä paikat if-elselle:Ihan pseudona ääneen lukien voisit asiaa käydä rivi riviltä läpi, sillä sitenhän se konekin periaatteessa toimii.
Eli ennenkuin lasket ja printtaat lukujen keskiarvon, sinun pitää tarkistaa summa. Jolloin iffissä on koodia tyyliin "jos summa ei ole nolla, laske ja printaa keskiarvo".
...
" Tehtäväpohjassa on mukana yllä esitelty ohjelma, jolla lasketaan syötettyjen lukujen summa. Ohjelmaa on muokattu siten, että se laskee myös syötettyjen lukujen keskiarvon. Keskiarvoa ei voi kuitenkaan laskea tilanteessa, missä lukuja ei ole lainkaan, sillä lukua ei saa jakaa nollalla. Muokkaa ohjelmaa siten, että keskiarvo lasketaan ja tulostetaan vain mikäli käyttäjä syöttää vähintään yhden luvun -- jos keskiarvoa ei voi laskea, ohjelman tulee tulostaa Keskiarvoa ei voi laskea.. "
...
Joo tuo on totta. Turhan nopeasti luin tuon tekstin ja huomannut edes, että siellä oli nuo kaksi eri syötettä erikseen. Jos ensimmäinen syöte on 0, niin sitten voi suoraan jättää ajamatta koko loppuosan koodista.Ei sinne iffin sisään kannata mennä ollenkaan, jos käyttäjä on sitä mieltä ettei lukuja lasketa (eli antaa luvun 0 tai vähemmän heti alussa). Silloin koko for-loopia ei tarvita mihinkään. @Dellu sinullahan on tuossa tehtävänannossa jo käytännössä paikat if-elselle:
keskiarvo lasketaan ja tulostetaan vain mikäli käyttäjä syöttää vähintään yhden luvun -> if
jos keskiarvoa ei voi laskea, ohjelman tulee tulostaa Keskiarvoa ei voi laskea -> else
Hämmentävä tehtävä ja tehtävänanto kyllä jotenkin. Jos käyttäjä vastaa kysymykseen "Kuinka monta lukua luetaan" vaikka 0 niin pitäisikö silloin kuitenkin tulostaa "Syötettyjen lukujen summa on $summa", kun mitään lukuja ei ole ikinä syötetty? Tai ehkä menen sekaisin, kun on muuttujat "lukuja" ja "luku" niin en nyt migreenin kanssa hiffaa kumpaan muuttujaan tehtävänannossa viitataan.
Ei sinne iffin sisään kannata mennä ollenkaan, jos käyttäjä on sitä mieltä ettei lukuja lasketa (eli antaa luvun 0 tai vähemmän heti alussa). Silloin koko for-loopia ei tarvita mihinkään. @Dellu sinullahan on tuossa tehtävänannossa jo käytännössä paikat if-elselle:
keskiarvo lasketaan ja tulostetaan vain mikäli käyttäjä syöttää vähintään yhden luvun -> if
jos keskiarvoa ei voi laskea, ohjelman tulee tulostaa Keskiarvoa ei voi laskea -> else
Hämmentävä tehtävä ja tehtävänanto kyllä jotenkin. Jos käyttäjä vastaa kysymykseen "Kuinka monta lukua luetaan" vaikka 0 niin pitäisikö silloin kuitenkin tulostaa "Syötettyjen lukujen summa on $summa", kun mitään lukuja ei ole ikinä syötetty? Tai ehkä menen sekaisin, kun on muuttujat "lukuja" ja "luku" niin en nyt migreenin kanssa hiffaa kumpaan muuttujaan tehtävänannossa viitataan.
Tässä piti vetää ihan mietintämyssy päähän. Ei siksi, että tehtävä olisi haastava vaan siksi, että "esitelty ohjelma" antaa hieman epäammattimaisen kuvan tekijästä monestakin syystä. Pahoittelen kyynistä setämieskoodariasennettani, mutta ei välttämättä ole terveellistä oppia asioita oletusarvoisesti väärin. Täydellisyyttähän ei tarvitse tavoitella, mutta esim. tyypitys olisi paikallaan.
Helpoin reitti lienee jo esitetty vastaus: "älä tee mitään, jos lukuja -muuttujan arvo on 0.
Mutta oletetaan, että meidän täytyy huomioida myös seuraavat seikat, jotta keskiarvo voidaan laskea:
- käyttäjä syöttää iteraatioiden määräksi "0.5", "-1" tai vaikkapa "kissa"
- käyttäjä syöttää luvuksi "0.5", "-1" tai vaikkapa "koira"
- käyttäjä ei syötä mitään
Tein 15min vedoksen siitä, miltä ohjelma voisi näyttää. Kuten todettu, niin "good enough" riittänee koulutehtävissä, täydellisyys sikseen. Mulkaisepa siis täältä esimerkki . Parempi ratkaisu olisi toki tivata käyttäjältä kunnollista, numeerista vastausta eikä vain exit(0), mutta sen saat(te) pähkäillä itseksenne
Suosittelisin myös esim. helsingin yliopiston mooceja. Aloittaen juurikin täysin perusteista: Kaikki tehtävät - Ohjelmoinnin perusteet ja jatkokurssi 2023 (löytyy myös luentomateriaalit tehtävien tueksi, pänttäämään vain. Lisätietoa).Kiitos viestistä! Fitechin tehtäviä aloitin tekemään omatoimisesti, jotta näen, että kiinnostaako ala ja olisiko minulla mahdollisuus joskus oppia näitä
Perehdyn esimerkkiisi ja koitan saada tehtävän tehtyä
Pitäisi saada uudelleen nimettyä tiedostot hakemistosta ja alihakemistoista. Tiedostoista pitäisi muuttaa non-asciit ascii merkeiksi.
Tyyliin àèìòù -> aeiou
Löytyisikö joltain valmista PowerShell scriptiä tuohon?
Chatgpt vastaus:
(Get-Content "C:\path\to\input\file.txt") -replace '\p{Mn}' | Set-Content "C:\path\to\output\file.txt" -Encoding ASCII
$Path = "C:\Tiedostojen\Polku" # Muuta hakemiston polku vastaamaan omaasi
$Files = Get-ChildItem $Path -Recurse
Foreach ($File in $Files) {
If ($File.Name -match '[^\u0000-\u007F]') {
$NewName = $File.Name -replace '[àáâãäå]', 'a' `
-replace '[èéêë]', 'e' `
-replace '[ìíîï]', 'i' `
-replace '[òóôõö]', 'o' `
-replace '[ùúûü]', 'u' `
-replace '[ýÿ]', 'y' `
-replace '[Ææ]', 'ae' `
-replace '[Øø]', 'o' `
-replace '[Åå]', 'a' `
-replace '[Çç]', 'c' `
-replace '[Ññ]', 'n' `
-replace '[ß]', 'ss'
$NewPath = Join-Path $File.Directory.FullName $NewName
Rename-Item -Path $File.FullName -NewName $NewName -Force
}
}
Hyvin todennäköistä. Itse jätinkin AMK:n kesken 20 vuotta sitten pääosin tästä syystä. Outoa menoa, että ikään kuin ensin hyväksytään "pull request", eli tehtävä, joka toimii suurinpiirtein sinnepäin. Sen jälkeen refaktoroidaan ja palataan aina samaan ongelmaan sitä ehostellen.Yleensähän nämä tehtävät tuppaavat menemään niin, että myöhemmissä tehtävissä sitten lisätään aiempiin tehtäviin nuo syötteentarkistukset yms. kun ne on teoriassa käyty lävitse. Tässä vaiheessa olisi tarkoitus todennäköisesti opetella if-else-rakenteen käyttöä ja olettaa, että käyttäjä antaa ns. järkeviä syötteitä.
Pitipäs itsekin tutustua tohon chatgpt:hen, ku ihmettelin vastausta. Toihan vain muuttaa yhden tiedoston kerrallaan, joka lienee helpompi käyttäjän omassa tiedostohallintasoftassa tehdä, ku räplätä komentorivillä tiedosto kerrallaan? chatgpt vastaus, ku kopsasin juhaan viestin:
Koodi:$Path = "C:\Tiedostojen\Polku" # Muuta hakemiston polku vastaamaan omaasi $Files = Get-ChildItem $Path -Recurse Foreach ($File in $Files) { If ($File.Name -match '[^\u0000-\u007F]') { $NewName = $File.Name -replace '[àáâãäå]', 'a' ` -replace '[èéêë]', 'e' ` -replace '[ìíîï]', 'i' ` -replace '[òóôõö]', 'o' ` -replace '[ùúûü]', 'u' ` -replace '[ýÿ]', 'y' ` -replace '[Ææ]', 'ae' ` -replace '[Øø]', 'o' ` -replace '[Åå]', 'a' ` -replace '[Çç]', 'c' ` -replace '[Ññ]', 'n' ` -replace '[ß]', 'ss' $NewPath = Join-Path $File.Directory.FullName $NewName Rename-Item -Path $File.FullName -NewName $NewName -Force } }
Kantsii toki testata ensin vaikkapa kopioimalla osa kansion sisällöstä alikansioineen toiseen kansioon ja ajaa siellä.
Get-ChildItem -File -Recurse | % { Rename-Item -Path $_.PSPath -NewName ( $_.name.replace( "ü", "u").replace("ä","a").replace("ö","o").replace("è","e").replace("é","e").replace("ù","u").replace("â","a").replace("ê","e").replace("î","i").replace("ô","o" )}
chatgpt:n vastaus, olisko se mitä haet?Mitenkäs saan bat-filen ajettua Administraattorina ilman UAC-promptia ja muutenkin silenttina?
Tässä bat-filen sisältö:
@Echo off
pnputil.exe /enable-device "PCI\VEN_8086&DEV_1902&SUBSYS_8169103C&REV_06\3&11583659&0&10"
pause
Eli kun filua klikkaa, niin batti ajetaan silenttina ja administraattorina.
Voit yrittää seuraavia tapoja ajaa bat-tiedosto Administraattorina ilman UAC-promptia ja hiljaisessa tilassa:
Näiden menetelmien pitäisi auttaa sinua ajamaan bat-tiedosto Administraattorina ilman UAC-promptia ja hiljaisessa tilassa. Muista kuitenkin, että bat-tiedoston ajaminen Administraattorina voi aiheuttaa turvallisuusriskin, joten varmista, että tiedostoa ei ole muokattu haitallisesti ennen sen ajamista.
- Käytä Windows Task Scheduler -ohjelmaa luomaan tehtävä, joka suorittaa bat-tiedoston Administraattorina. Voit asettaa tehtävän asetukset niin, että se suoritetaan hiljaisessa tilassa. Tämä tapahtuu valitsemalla "Run with highest privileges" ja "Hidden" tehtävän asetuksista.
- Käytä PowerShellia ajamaan bat-tiedosto Administraattorina. Voit käyttää seuraavaa komentoa suorittaaksesi bat-tiedoston hiljaisesti PowerShellin avulla:
Start-Process powershell -Verb runAs -ArgumentList "-command & 'path\to\your\bat\file.bat'" -WindowStyle Hidden
Vaihda "path\to\your\bat\file.bat" oikeaksi poluksi bat-tiedostoon.- Käytä "Run as administrator" -komennolla varustettua pikanäppäintä. Voit luoda pikanäppäimen, joka käynnistää bat-tiedoston Administraattorina. Voit sitten käyttää seuraavia vaiheita:
- Etsi bat-tiedosto ja napsauta sitä hiiren kakkospainikkeella.
- Valitse "Send to" ja sitten "Desktop (create shortcut)".
- Siirry työpöydälle ja napsauta hiiren kakkospainikkeella luotua pikakuvaketta.
- Valitse "Properties" ja sitten "Advanced".
- Valitse "Run as administrator" ja "OK".
- Tallenna asetukset napsauttamalla "Apply" ja "OK".
Oikeastaanhan koko foorumin voisi laittaa lukkoon. Jos on jotain sanottavaa, niin käy juttelemassa ChatGPT:n kanssa.Linkki Chat Gpt:hen ja ketju lukkoon? Tai säännöksi että kysy ensin AI:lta, ja jos ei toimi niin sitten tänne…
Mikä on tämän muuttujan arvo siinä vaiheessa, kun lasket keskiarvoa?Ja TAAS olen ihan hukassa... Jos joku ennättää ja jaksaa auttaa niin olisin kiitollinen! Tässä tehtävä, tehtävän esimerkki ja lopussa meikäläisen yritys ratkaista tehtävä (epäonnistunut). Olen kysynyt jos tuon FiTechin sivujen kautta apua, mutta ikävä kyllä en siltäkään ymmärrä. Selkeästi taitoni eivät riitä koodaukseen, mutta en halua vielä luovuttaa, saattaa olla kuitenkin että jossain vaiheessa löytyy se juttu missä olen hyväkin
Mutta tässä tehtävä, esimerkki ja oma yritys:
Kirjoita ohjelma, joka kysyy käyttäjältä lukuja kunnes käyttäjä syöttää luvun 0. Tämän jälkeen ohjelma tulostaa syötettyjen lukujen keskiarvon. Käytä luvun kysymiseen tekstiä Syötä luku. ja syötettyjen lukujen summan tulostamiseen tekstiä Keskiarvo: 3.5 (edellä keskiarvo 3.5). Lukua 0 ei huomioida keskiarvon laskemisessa. Mikäli käyttäjä ei syötä yhtäkään lukua, ohjelman tulee tulostaa viesti Keskiarvoa ei voi laskea. Alla on esimerkki odotetusta ohjelman toiminnasta.Syötä luku.
< 3
Syötä luku.
< 2
Syötä luku.
< 0
Keskiarvo: 2.5
Toinen esimerkki.Syötä luku.
< 0
Keskiarvoa ei voi laskea.
****************'
Oma viritelmä jossa vastaus Infinity...
import 'dart:io';
main() {
var summa = 0;
var luku = 0;
while (true) {
print('Syötä luku.');
var syote = int.parse(stdin.readLineSync());
if (syote <= 0) {
break;
}
summa += syote;
summa ++;
}
if (summa > 0) {
var keskiarvo = summa / luku;
print('Keskiarvo: $keskiarvo');
}else{
print('Keskiarvoa ei voi laskea.');
}
}
Ihan aluksi vinkkinä että nuo koodinpätkät kannattaa laittaa tänne foorumille code-tagien väliin niin sisennykset pysyvät mukana ja on huomattavasti helpompaa lukea koodia. Toki kun lainaa tekstiä, sisennys näkyy siellä.Ja TAAS olen ihan hukassa... Jos joku ennättää ja jaksaa auttaa niin olisin kiitollinen! Tässä tehtävä, tehtävän esimerkki ja lopussa meikäläisen yritys ratkaista tehtävä (epäonnistunut). Olen kysynyt jos tuon FiTechin sivujen kautta apua, mutta ikävä kyllä en siltäkään ymmärrä. Selkeästi taitoni eivät riitä koodaukseen, mutta en halua vielä luovuttaa, saattaa olla kuitenkin että jossain vaiheessa löytyy se juttu missä olen hyväkin
Mutta tässä tehtävä, esimerkki ja oma yritys:
Kirjoita ohjelma, joka kysyy käyttäjältä lukuja kunnes käyttäjä syöttää luvun 0. Tämän jälkeen ohjelma tulostaa syötettyjen lukujen keskiarvon. Käytä luvun kysymiseen tekstiä Syötä luku. ja syötettyjen lukujen summan tulostamiseen tekstiä Keskiarvo: 3.5 (edellä keskiarvo 3.5). Lukua 0 ei huomioida keskiarvon laskemisessa. Mikäli käyttäjä ei syötä yhtäkään lukua, ohjelman tulee tulostaa viesti Keskiarvoa ei voi laskea. Alla on esimerkki odotetusta ohjelman toiminnasta.Syötä luku.
< 3
Syötä luku.
< 2
Syötä luku.
< 0
Keskiarvo: 2.5
Toinen esimerkki.Syötä luku.
< 0
Keskiarvoa ei voi laskea.
****************'
Oma viritelmä jossa vastaus Infinity...
import 'dart:io';
main() {
var summa = 0;
var luku = 0;
while (true) {
print('Syötä luku.');
var syote = int.parse(stdin.readLineSync());
if (syote <= 0) {
break;
}
summa += syote;
summa ++;
}
if (summa > 0) {
var keskiarvo = summa / luku;
print('Keskiarvo: $keskiarvo');
}else{
print('Keskiarvoa ei voi laskea.');
}
}