Uutiset:

Ilmoitustaulu mahdollisten ongelmien varalta (wikimedia.org / Etherpad)

Sähköpostia ylläpidolle: kantapaikanherra (at) gmail.com

Main Menu

Ohjelmointi

Aloittaja Juha, helmikuu 03, 2019, 10:01:17

« edellinen - seuraava »

0 Jäsenet ja 1 Vieras katselee tätä aihetta.

Vaaraton Norsu

Semmoinen kuin CSS Grid tuli vielä mieleeni, kun se mahdollistaa webbisivun elementtien järjestämisen helposti ja vieläpä ikkunan kokoon mukautuvalla tavalla. Mikä voi ehkä tehdä ennalta määrätymättömän määrän elementtejä sommitelusta helpompaa. En tiedä.

Vaaraton Norsu

Ehkä tää sopis tänne. Oon vaan tätä miettinyt, kun kirjoittaessani tälle palstalle aika usein klikkaan "Esikatselu." Sivun javascript -koodeissa (ks. mm. otteet alla) ei taida olla BBCode -tulkkia, joka esikatselun generoisi? Sen sijaan BBCoden kääntänee html:ksi Kantiksen palvelimen PHP -koodi. Mikä tuntuu vähän haaskaukselta palvelimen resurssien kannalta. (Ja mikä on joskus hidastakin, vaikkei siitä haittaa olekaan.)

function previewPost()
{
if (window.XMLHttpRequest)
{
// Opera didn't support setRequestHeader() before 8.01.
if ('opera' in window)
{
var test = new XMLHttpRequest();
if (!('setRequestHeader' in test))
return submitThisOnce(document.forms.postmodify);
}
// !!! Currently not sending poll options and option checkboxes.
var x = new Array();
var textFields = ['subject', 'message', 'icon', 'guestname', 'email', 'evtitle', 'question', 'topic', 'f775bb74a'];
var numericFields = [
'board', 'topic', 'last_msg',
'eventid', 'calendar', 'year', 'month', 'day',
'poll_max_votes', 'poll_expire', 'poll_change_vote', 'poll_hide'
];
var checkboxFields = [
'ns'
];

for (var i = 0, n = textFields.length; i < n; i++)
if (textFields[i] in document.forms.postmodify)
{
// Handle the WYSIWYG editor.
if (textFields[i] == 'message' && 'oEditorHandle_message' in window && oEditorHandle_message.bRichTextEnabled)
x[x.length] = 'message_mode=1&' + textFields[i] + '=' + oEditorHandle_message.getText(false).replace(/&#/g, '&#38;#').php_to8bit().php_urlencode();
else
x[x.length] = textFields[i] + '=' + document.forms.postmodify[textFields[i]].value.replace(/&#/g, '&#38;#').php_to8bit().php_urlencode();
}
for (var i = 0, n = numericFields.length; i < n; i++)
if (numericFields[i] in document.forms.postmodify && 'value' in document.forms.postmodify[numericFields[i]])
x[x.length] = numericFields[i] + '=' + parseInt(document.forms.postmodify.elements[numericFields[i]].value);
for (var i = 0, n = checkboxFields.length; i < n; i++)
if (checkboxFields[i] in document.forms.postmodify && document.forms.postmodify.elements[checkboxFields[i]].checked)
x[x.length] = checkboxFields[i] + '=' + document.forms.postmodify.elements[checkboxFields[i]].value;

sendXMLDocument(smf_prepareScriptUrl(smf_scripturl) + 'action=post2' + (current_board ? ';board=' + current_board : '') + (make_poll ? ';poll' : '') + ';preview;xml', x.join('&'), onDocSent);

document.getElementById('preview_section').style.display = '';
setInnerHTML(document.getElementById('preview_subject'), txt_preview_title);
setInnerHTML(document.getElementById('preview_body'), txt_preview_fetch);

return false;
}
else
return submitThisOnce(document.forms.postmodify);
}


En saa oikein selvää, miten esikatselun luonti ihan tarkkaan ottaen tapahtuu. Jonkin verran relevantteja koodeja on myös täällä, mutta en löydä mitään avainkohtaa.

Mietin, että oisko Kantista teoriassa mahdollista toteuttaa "yhden sivun sovelluksina" niin että BBCoden tulkkaus tapautuisi selaimessa? Mikä sen estäisi? En ole pro. Jonkun tyhmän kurssin käynyt muutama vuosi sitten.

-:)lauri

Tein tänään PHP:llä rajapinnan. Huomenna pitää testata Postmanilla toimiiko kaikki endpointit. Sitten olisi vuorossa autentikointi ja viimeiseksi, mutta ei vähäisimmäksi frontend. Haluaisin käyttää frontendin kirjastona reactia, mutta todennäköisesti päädyn jquery-ratkaisuun.
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.

-:)lauri

^piti sitten kuitenkin lisätä vielä muutama endpointti rajapintaan, että ei tässä vielä kummoisiakaan testejä päässyt suorittamaan. Itse asiassa vieläkin pitää tehdä ainakin kappale endpointteja, joka ei ole täysin ongelmaton, sillä sen pitäisi tehdä niin paljon eri asioita ja ehdollisesti.

Tässä on välissä sopivasti viikonloppu, että saa ongelma muhia alitajunnassa pari päivää. Ehkäpä ratkaisu syntyy maanantaina tuoreilla aivoilla nopeastikin. on tässä ollut pari päivää niin kiinni projektissa, että lyhyenkin etäisyyden otto on varmasti paikallaan.

Pitää muuten myös muistaa jossain välissä dokumentoida tää rajapinta, että on sitten joku tietolähde kuinka systeemi toimii. Sinällään tää on kyllä hirmu simppeli rajapinta mutta ei auta. Kun aikaa kuluu kuukausi tai kaksi sitä ei muista itsekään, miten homman on tehnyt ja silloin ohjeet ovat arvokkaita.
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.

a4

^ Tuossa oli pari hyvää yleispätevämpääkin niksiä.

-:)lauri

^Opin hiljattain aivan fantastisen uuden niksin.

Kun kirjoittaa esimerkiksi luokkia, niissä voi olla sellaisia ominaisuuksia, joita voisi käyttää uudestaan, mutta kun niissä on usein sellaista koodia mukana, joka on projekti- tai toimintokohtaista, jolloin niitä ei voi käyttää sellaisenaan uudestaan. Tähän pulmaan opin, että lähettää callbackeja kyseisten luokkien metodeille, jotka voi toteuttaa kyseisten luokkien ulkopuolella. Eli näin voi kirjoittaa mahdollisimman geneeristä koodia ainakin joihinkin luokkiin ja silloin kun niiden proseduurit olisivat käytettävissä muuallakin.

Tässä on siis selkeät hyötynsä (olen jo toisessa projektissa käyttänyt tätä tapaa), mutta myös haittansa.

Noista haitoista sen verran, että esimerkiksi tässä rajapintahommelissa, jota olen värkännyt, olisi muutama paikka, jossa voisin vähentää koodin määrää huomattavasti yllä kuvaamallani tavalla. Kokemuksesta kutenkin tiedän, että koodin luettavuus kärsii myös, jos sitä abstrahoi liikaa esim. juuri tällaisella kikkailulla. Eli olen hieman kahden paikkeilla, lähteäkö abstrahoimaan luokkieni metodeita vai jätänkö ne tällaisiksi.
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.

-:)lauri

#51
class Dog {
    function talk() {
        print('Dog say wuf!');
    }
}
$dog = new Dog();
$dog->talk(); // Dog say wuf!


Tuota ei voi käyttää nyt kuin koiran tapauksessa, mutta pienellä abstrahoillilla tuota saadaan käytettyä kaikissa tapauksissa, joissa entiteetin pitäisi puhua:

class Mammal {
    function talk($func) {
        $func();
    }
}
$dogTalk = function() {
    print('Dog say wuf!');
}
$catTalk = function() {
    print('Cat say meow!');
}
$dog = new Mammal();
$dog->talk($dogTalk); // Dog say wuf!
$cat = new Mammal();
$cat->talk($catTalk); // Cat say meow!
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.

Vaaraton Norsu

Täällä puhutaan semmoisesta kuin Strategy pattern. Olen lukenut ton kirjan, mutta siitä on liian kauna, että osaisin mitään selittää.   :-[  Tää on vissiin raskaampi ratkaisu kuin sun käyttämäsi, EK Möhkäle?





a4

Onko sinulla tai teillä ammattikoodareilla koskaan ollut tällaista työprojektia? (videon alussa): https://kantapaikka.net/index.php/topic,54.msg53990.html#msg53990
Trailerissa ei näy kuinka kaveri saa hetken monitoria tuijotettuaan totaalisen paskahalvauksen.
Kyseessä on jonkinlainen tiimin sisäinen open source-koodaus.
Ehkä hän vain tajusi koodaavansa republikaaneille algoritmia vaalivoittoon.

-:)lauri

#54
Lainaus käyttäjältä: Vaaraton Norsu - maaliskuu 06, 2020, 16:41:21
Täällä puhutaan semmoisesta kuin Strategy pattern. Olen lukenut ton kirjan, mutta siitä on liian kauna, että osaisin mitään selittää.   :-[  Tää on vissiin raskaampi ratkaisu kuin sun käyttämäsi, EK Möhkäle?




Laitoit erinomaisen linkin. Samasta asiasta tässä on kyse. Tai jos hiusta mennään halkomaan - ja miksemme menisi - niin siinä missä sun esimerkki sopii kaikkiin tilanteisiin, kuten esimerkiksi myös siihen, että kirjoittaa koko luokkametodin uusiksi, tuo mun niksi kirjoittaa vain pienen osan metodia uusiksi. tai sama asia sekin tietysti on silla kyse on siitä että abstrahoidun koodin tai sen osan toteuttaa yksilöllisesti luokan ulkopuolella. Eli ei tämä mun niksi sinällään mikään järjetön oppi ollut, mutta kun ei ole vuosiin tarvinnut juuri muuta kuin proseduraalista koodia, oliohjelmoinnin design patternit tuppaavat unohtumaan.
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.

-:)lauri

#55
^voisin kuvitella, että oliohjelmoijille asia tulee selkärangasta, mutta itselläni on tullut liian harvoin tilanteita vastaan, joissa voisin hyödyntää jo kirjoittamaani koodia. Viimeaikoina kun työnkuva on muuttunut enempi saman asian toteuttamiseksi hieman erilaisilla variaatioilla, asia on alkanut taas koskettaa koodiani.
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.

Lenny

Lainaus käyttäjältä: Vaaraton Norsu - maaliskuu 04, 2020, 20:59:29
Mietin, että oisko Kantista teoriassa mahdollista toteuttaa "yhden sivun sovelluksina" niin että BBCoden tulkkaus tapautuisi selaimessa? Mikä sen estäisi? En ole pro. Jonkun tyhmän kurssin käynyt muutama vuosi sitten.

Oma kysymyksensä on myös että miten tällainen foorumi voisi toimia yhden sivun sovelluksena. Vähän kuten Facebook vai?
Lainsäädäntö ennen luontoa (Immanuel Kant)

-:)lauri

#57
Lainaus käyttäjältä: a4 - maaliskuu 06, 2020, 17:11:23
Onko sinulla tai teillä ammattikoodareilla koskaan ollut tällaista työprojektia? (videon alussa): https://kantapaikka.net/index.php/topic,54.msg53990.html#msg53990
Trailerissa ei näy kuinka kaveri saa hetken monitoria tuijotettuaan totaalisen paskahalvauksen.
Kyseessä on jonkinlainen tiimin sisäinen open source-koodaus.
Ehkä hän vain tajusi koodaavansa republikaaneille algoritmia vaalivoittoon.

Ei ihan mutta melkein. Tai kärjistäen tuollaista se käytännössä on kun ryhtyy kehittämään jonkun toisten kirjoittamaa koodia varsinkin ilman dokumentaatiota. Ei aina, mutta ohjelmiston koon kasvaessa ja seikkaperäisen dokumentaation puuttuessa varsin normaalia. Ainakin meidän firmassa. Vaikka saan projekteihin kolleegoiltani paljon enemmän ohjeita, kuin vain että: "you figure it out", koodi on varsinkin meidän vanhemmissa järjestelmissä (jotka eivät käytä nykyaikaisia hyvin dokumentoituja kirjastoja) aluksi aika usein "matrixia", ja aika lailla ollaan tyhjän päällä kun pitää selvittää - mahdollisesti rivi kerrallaan - kuinka jokin järjestelmän käyttötapaus etenee koodissa alusta loppuun asti.
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.

a4

Häiriköin vielä ummikkona sen verran tätä ketjua että kysyn, perustuen elokuvasta omaksumaani faktaan jossa sodan aikaisessa kuunteluasemassa opittiin tunnistamaan vihollisen morsettajat heidän "käsialastaan" eli tavastaan morsettaa, jotta kehittyykö koodareille yksilöllinen koodaustyyli, oma tunnistettava "käsiala"?

-:)lauri

Lainaus käyttäjältä: Lenny - maaliskuu 06, 2020, 17:29:59
Lainaus käyttäjältä: Vaaraton Norsu - maaliskuu 04, 2020, 20:59:29
Mietin, että oisko Kantista teoriassa mahdollista toteuttaa "yhden sivun sovelluksina" niin että BBCoden tulkkaus tapautuisi selaimessa? Mikä sen estäisi? En ole pro. Jonkun tyhmän kurssin käynyt muutama vuosi sitten.

Oma kysymyksensä on myös että miten tällainen foorumi voisi toimia yhden sivun sovelluksena. Vähän kuten Facebook vai?

Tuon tyyppisestä konversiosta olisi varmaankin kyse? Ja tämän järjestelmän php-alusta ei kaiketi suoraan tue tuollaista vaihtoehtoa? Vai tarjoaako Simple Machinesin backend esim. json-rajapinnan?

Erona siis se, että siinä missä nykyisellään serveri palauttaa jokaisen kutsun yhteydessä jokaisen sivun kaiketi valmiina html-koodeina, yhden sivun aplikaatiossa serveri palauttaisi ensiksi yhden valmiin mutta geneerisen html-sivun ja sen jälkeen geneerisen sivun javascript tilaa serveriltä päivittämättä sivua esim. json-muotoisen paketin dataa, jonka perusteella geneerisen sivun html muokataan javascriptillä sen näköiseksi, kuin pitää.
Selvin merkki psykoosista on se, että kuvittelee ajattelevansa vain kylmän rationaalisesti ja loogisesti.