Jump to content
php.lv forumi

werd

Moderatori
  • Posts

    380
  • Joined

  • Last visited

Posts posted by werd

  1. Oi :) Nepamanīju niansi par vienādu vietu un vietas izlaišanu, ja vienādi punkti.

    Kaut kas šāds (plain & stupid) risinās problēmu PHP pusē:

    <?php
    
    $array = [
        [
            'Name'        => 'Bob Johnson',
            'Points'      => 75,
            'Points2'     => 68,
            'TotalPoints' => 143,
        ],
        [
            'Name'        => 'John Doe',
            'Points'      => 80,
            'Points2'     => 72,
            'TotalPoints' => 152,
        ],
        [
            'Name'        => 'Emily Davis',
            'Points'      => 85,
            'Points2'     => 67,
            'TotalPoints' => 152,
        ],
        [
            'Name'        => 'Jane Smith',
            'Points'      => 90,
            'Points2'     => 82,
            'TotalPoints' => 172,
        ],
    ];
    
    $place               = 1;
    $previousTotalPoints = null;
    $increment           = 1;
    foreach ($array as $row) {
        $totalPoints = $row['TotalPoints'];
    
        if ($previousTotalPoints) {
            if ($totalPoints == $previousTotalPoints) {
                $increment++; // only increment - place is the same as before
            } else {
                $place += $increment; // place equals previous place + the increment (how many had the same points)
    
                $increment = 1; // reset the increment (normally each next place is +1)
            }
        }
    
        echo sprintf(
            'Place: %d - Name: %s - Points: %d - Points2: %d - TotalPoints: %d',
            $place,
            $row['Name'],
            $row['Points'],
            $row['Points2'],
            $row['TotalPoints'],
        );
        echo PHP_EOL;
    
        $previousTotalPoints = $totalPoints;
    }

     

  2. Ņemot vērā, ka tiek izmantots PHP, lai apstrādātu rezultātus:

    1. Atlasi datus no datu bāzes kārtojot tos pēc kopējā punktu skaita un vārda (ja punkti sakrīt)
       
      SELECT `Name`, Points, Points2, (Points + Points2) AS TotalPoints 
      FROM table_name 
      ORDER BY TotalPoints ASC, `Name` DESC

       

    2. Neredzu vajadzību rēķināt iegūtu vietu ar SQL vaicājumu - tā vietā iterē cauri rezultātiem secīgi un iegūtu vietu rēķini PHP pusē
       
      $place = 1;
      while ($row = mysqli_fetch_assoc($result)) {
          echo sprintf(
              'Place: %d - Name: %s - Points: %d - Points2: %d - TotalPoints: %d',
              $place++,
              $row['Name'],
              $row['Points'],
              $row['Points2'],
              $row['TotalPoints'],
          );
          echo PHP_EOL;
      }

    Zemāk piemēri:

    image.png.16434268a42f7189723e79db6e8bea4b.png

    image.thumb.png.bd497227fd5c4dee5cd590ba31302723.png

  3. Piekrītu augstāk sniegtajiem komentāriem - "zaļš gurķis" ļoti lēni (ja vispār) spēs izdarīt visu viens pats bez palīdzības no citiem.

    Skarbā realitāte, bet tomēr jāņem vērā, ka programmēšana nav priekš visiem - ir cilvēki, kas gadiem mokās, bet spītīgi mēģina sevi pārliecināt: "es esmu programmētājs". Katram, protams, izaugsme ir dažāda un tā atkarīga no vides - vai darbojies spēcigā komandā/projektā vai "mauc pa savam" kādā mazā, melnā kantorītī.

    Pieredze rāda, ka bieži vien problēma pat vairāk ir ne tehniska - spēja saprast biznesa pusi jeb saprast ko nepieciešams uzbūvēt un kāpēc. Ja tas ir detaļās (nevis virspusēji) skaidrs, tad piemeklēt atbilstošāko tehnisko risinājumu nav tik sarežģīti - ja neizproti nedz biznesa pusi, nedz tehnisko - tad vienam tikt galā ir grūti un rezultāts diezgan droši nebūs gaidītais.

    @Mārcis Abele silti iesaku tev atrast sevi spēcīgā komandā (tas nenozīmē lielā uzņēmumā) - ja tev ir dots būt labam programmētājam, tad progress un rezultāti neizpaliks (zinošāki komandas biedri palīdzēs).

  4. 20 hours ago, Spoon said:

    @werd ja nav noslēpums, kas par uzņēmumu? Gribas pasekot līdzi, ja nu kaut kas attiecīgā laikā un vietā izlec. 

    @briedis jā, saprotams. Bet pieļauju daudzi lielie un interesantie tiek šobrīd uzsākti vai ir migrācijas sākuma procesā.

    @Spoon galīgi nav noslēpums :) SIA Arkbauerhttps://arkbauer.com/about/technology/ var papētīt sīkāk kādas tehnoloģijas +/- ikdienā izmantojam. Šobrīd kā reiz meklējam komandas papildinājumu, ja ir interese ;)

  5. Mēs ikdienā ar šīm tehnoloģijām darbojamies - Symfony4/5 + PHP7/8.

    Protams, PHP8 ir pārāk svaigs, lai visi projekti tiktu nomigrēti mērkaķa ātrumā. Jauniem projektiem, protams, vienmēr izmantojam pēdējās stabilās relīzes, ja vien nav kādi specifiski ierobežojumi.

  6. 7 minutes ago, jurgenzz said:

    Pats lieto hetzner, nedaudz lētāks kā DO

    Pat diezgan lētāk kā DO :)

    DO ir lietots labu laiku - stabils un atbilst autora prasībām. Hetzner tiek lietots salīdzinoši nesen, bet jau tagad skaidrs, ka viņiem problēmu ir vairāk un bieži kāda fiziskā mašīna palido - viņu incident lapā ir garš saraksts :)

    Hetzner arī nedaudz atpaliek fīču ziņā - nav firewall etc. Protams, iet uz priekšu arī viņi - nesen palaida Load Balancing Beta versiju.

  7. On 7/10/2020 at 2:25 PM, codez said:

    Autortiesības ir huiņa.
    Man personīgi bija reiz gadījums, kad specifiskā situācijā, radīju ļoti specifisku risinājumu, kurš iekļāva vairākas matemātiskas viltības. Pēc pus gada atradu 2+ gadus vecu bloga ierakstu, kurā bija tieši tāds pats risinājums un ne tikai tāds pats - tipa aptuveni tāds pats, bet 30+ rindiņas algoritma absolūti identiskas līdz pēdējam matemātiskajam elementam, atšķīrās tikai mainīgo nosaukumi un koda valoda/formatējums.
    Kāpēc tā varēja notikt? Tāpēc, ka tas bija viens no loģiskākajiem šīs problēmas risināšanas ceļiem cilvēkam ar padziļinātām zināšanām matemātikā.

    Attiecīgi autortiesības ir huiņa tāpēc, ka ir absurdi, ka kādam pieder tiesības uz kāda veida informācijas kombināciju.
    Kāpēc, ja kāds ir radījis kādu informācijas kombināciju, kādam citam būtu liegts to radīt ar?

    No ekonomikas viedokļa. Patenti un autortiesības uztur lielos monopolus/korporācijas, kuri, kļūstot ar vien lielāki, sāk arvien vairāk stagnēt un savu pozīciju notur tikai ar valsts vardarbības atbalstu. Ja tas neeksistētu, tad pavisam dabīgā veidā, ekonomiskie resursi būtu sadalīti daudz vienmērīgāk, nekā pašlaik, kā arī jaunrade un tehnoloģiskā attīstība būtu straujāka.

    Autortiesības taču neliedz citiem radīt to pašu no nulles (bez špikošanas) :) Ir gan stulbi, ka figņas savietošanu ar citu figņu var definēt kā patentu (dizaina patents etc.) un pārējie maksā vai sūkā pirkstu.

  8. Manuprāt, summa ir vienāda ar vidējo no viņu potenciālā zaudējuma un tava potenciālā ieguvuma, ja nepārdosi un paturēsi sev. Pieņemot, ka tu pats to nelieto un arī neplāno lietot,  kā arī pieņemot, ka šis uzņēmums ir kāds no Lursoftā atrodamajiem (kam publiskie finanšu rādītāji ir skumji) - pārsimts EUR max.

  9. Ja Smarty, tad prātā nāk 3x varianti:

    1. Būs jāuztur aizvēsturiski projekti, kuros tas tika izmantots, jo agrāk skaitījās "kruts"
    2. Būs jāizmanto jauniem projektiem, jo kāds vēl aizvien domā, kas tas ir "kruts"
    3. Gan, gan

    Jebkurā gadījumā, domāju, ka reti kuram ceļās roka sūtīt CV :)

  10. On 2017.04.10. at 4:28 PM, F3llony said:

    @werd ne ļoti related, bet es nule pabeidzu personāla atlases izmaiņas, un nelielu iekšējo pētījumu aiz tā. Daži punkti no tā, ko secinājām analizējot kandidatūras, retention, profilus, aptaujājot cilvēkus kas jau strādā un kandidātus post-intervijās. 

    1. Kandidāti, īpaši pieredzējušie, universāli ienīst teorētiskas un/vai generic problēmas. Piemēram, "uztaisi kaut kādu reģistrācijas lapu" vai "še fails X, apstrādā un iegūsti rezultātu Y" utml. Tavs uzdevums iekrīt zem šī. Arī mums līdz šim bija līdzīgs "universālais" tests. Atmetām, jo redzējām ka daudzi labi profili vienkārši atteicās tos pildīt un noleca no procesa.
    2. Kandidāti universāli ienīst whiteboarding - "pastāsti, kā implementēt tree sort" piemēram, un tamlīdzīgus jautājumus.
    3. Kandidāti universāli ienīst online testus, trivijas, Hackerrank utml.

    Paldies par info! :) Kādi rezultāti ar šo jauno procedūru?

  11. 30 minutes ago, codehighriga said:

    Mind sharing your insights? Ļoti lakoniska atbilde. Būtu interesanti uzzināt vairāk.

    1. Saņemam uzdevuma risinājumu (rekomendējam Github repo, bet nav obligāti).
      1. Ja ir Github profils, tad, protams, arī aplūkojam publiskos repo un dalību OS projektos un sociālo IT dzīvi kopumā
      2. Ja ir atsūtīts CV, tad, protams, iepazīstamies ar to
      3. Tāpat arī uzmeklējam personu iekš LinkedIn un papētam profesionālo vēsturi
    2. Iepazīstamies ar risinājuma aprakstu (ja tāds ir) un pašu kodu
      1. Aplūkojam koda stilu, struktūru, noformējumu, komentārus, sarežģītību, apjomu
      2. Detalizēti iepazīstamies ar realizēto biznesa loģiku
        1. Kādi pieņēmumi vai ierobežojumi tiek lietoti (piemēram, kādas vērtības tiek atļautas vai nē)
        2. Kādi robežgadījumi ir apskatīti un realizēti
    3. Kodu darbinām uz LEMP (Linux, Nginx, MySQL, PHP7), izmantojam Vagrant
      1. Šeit tad arī pēc vajadzības tiek izveidota DB utt.
      2. Pārbaudām testus (vienībtestus u.c., ja tādi ir)
        1. Līdz ar to arī testu koda pārklājumu (code coverage)
    4. Sagatavojam kopsavilkumu (pros & cons) un nosūtam to kandidātam
      1. Ja ir kādi jautājumi no vienas vai otras puses, tad tos arī izrunājam
      2. Ja kandidāts atbilst mūsu meklētajam, tad papildus arī piedāvājam tikties klātienē, lai iepazītos tuvāk
  12. 3 minutes ago, codehighriga said:

    @werd, vai ceļš, kā tu testēsi saņemot uzdevuma risinājumu ir apmēram šāds?

    1. Tev atsūta linku uz github repo

    2. Vizuāli novērtē repo, vai ir pievienota readme informācija, instrukcijas, kas tāds?

    2. Noklonē repo

    3. Palaid paša kandidāta rakstītos testus?

    4. Atver koda editorā, novērtē failu struktūru, klašu, interfeisu struktūru, autoloadingu, failu garumu, utt.

    5. Novērtē formatējumu, vai ir PSR, vai ir konsistents namings, mainīgo nosaukumi, utt

    6. Ja redzētais apmierina, sazinies ar kandidātu? Padiskutējat par vietām kur tev radās jautājumi vai ieteikumi?

    Kaut ko izlaidu, kaut kur kļūdos?

    Kaut kas uz to pusi.

  13. 14 minutes ago, codehighriga said:

    Ja neņem vērā vizuālu koda apskati, kā tu nosaki, vai uzdevums ir izpildīts? Vai ir kāda konsoles komanda kuru tu palaid un tai jāizvada iepriekš zināms rezultāts?

    Man arī ir tas gods patestēt potenciālos darbiniekus, bet tas, vai darba uzdevums ir izpildīts, tiek primāri noteikts ar jau iepriekš manis uzrakstītiem phpunit testiem. Tādējādi kandidātam ir uzreiz skaidrs  kādu klasi es sagaidu un kādu rezultātu sagaidu no tās publiskajām metodēm. Kandidāta ziņā paliek tas, ko dara privātās metodes un kaut kādas apakšklases kuras viņš vai nu veido vai nu neveido (kā jau tu teici - saliek visu vienā failā, vai tomēr saskalda).

    Tātad primāri es (un pats kandidāts) palaižam testus un noskaidrojam vai uzdevums ir izpildīts. Atkrīt daudzas neskaidrības. Bet kā tu nosaki šo posmu? Tāds posms vispār ir?

    Vai tikai ver vaļā phpstormu un skaties kodu vizuāli?

    Kaut kādā līmenī līdzīgu struktūras forsēšanu nosaka @werd piedāvātie interfeisi, bet nu jā, tas ir daudz brīvāk nekā mans variants.

    Šī uzdevuma struktūra nav tāda, lai pateiktu vai uzdevums ir izpildīts vai nē. Būtu muļķīgi uzdevumā nodefinēt jau gatavus vienībtestus un tai pat laikā prasīt izmantot TDD pieeju :) 
    Arkbauer izpratnē senior programmētājs ir cilvēks, kas pats domā nevis vienkārši izpilda katru punktu no uzdevuma apraksta (monkey see - monkey do).

    14 minutes ago, codehighriga said:

    Man gribas tā, ka kandidāts atsūta linku uz savu github repozitoriju, es noklonēju un sekundes laikā uzzinu vai uzdevums ir izpildīts. Jums tā nav?

    Nē, mums tā nav. Es uzskatu, ka sekundes laikā nav iespējams objektīvi novērtēt programmētāju (it īpaši senior līmeņa). Mēs cilvēkus atlasām individuāli - viena mēraukla visiem neder.

  14. 28 minutes ago, codehighriga said:

    Uzdevums tomēr liekas nedaudz izplūdis, nav skaidrs vai gribat implementāciju symfony, laravel, vai kaut kādā vannila php. Kāda ir DB, sesijas, kāds testu freimworks. Šobrīd liekas mazliet nekonkrēti kādu veidolu tam ir jāiegūst.

    Jāpiekrīt @briedis teiktajam. Šis uzdevums tika veidots ar domu, ka to varēs izpildīt gan iesācējs (junior), gan pieredzējis (senior) programmētājs. Nekas konkrēts netiek "uzspiests", jo mēŗkis ir iegūt priekšstatu par kandidāta individuālajām spējām (spriestspēju, loģisko domāšanu, tehnisko izdpildījumu utt.).
    Ja ir vēlme izmantot kādu no ietvariem - droši. Ja šķiet, ka ir nepieciešama datu bāze vai sesijas - droši.

×
×
  • Create New...