Portofoliu – Programare Si SEO

Servicii Programare si SEO

Sincer nu stiam ce sa pun aici, nu ca nu am ce sa pun dar cred ca un portofoliu nu reflecta/quantifica priceperea unui developer/”SEO-ist”/web-designer in cele mai multe cazuri.

Sa-ti explic:

Creare siteuri:
Instalezi un wordpress cu o thema cumparata de catre client, faci modificari minore putin (css un plugin custom bla bla bla) si nu numai ca il treci in protofoliu la site-uri create iti mai bagi si link catre site-ul tau zicand “site creat de – gigios(ca ne place engleza) media punct!”..

Nu stiu poate-s io mai trilulilu dar mi se pare denaturare noah. Adica e ca si cum altcineva ar fi creat-o pe MonaLisa si uite’l pe Da Vinci al nostru cum a pus putin rosu cu cea mai mica pensula pe care a gasit-o in coltul din stanga jos al tabloului, dupa care s-a semnat si si-a zis: “Gata frate asta e!Mi-a iesit si asta! hai s-o trec la portofoliu”

Cam asa e si cu creearea de site-uri(in cazul WP-ului si themelor cumparate). Gen ai deja back-endul(WP) ai thema cumparata(habar nu am themeforest sa zicem) si tu ai venit ai facut niste setari si aia e, ne-o atribuim…

Nici in cazul in care creezi tu thema nu mi se pare wow deoarece ai deja un back-end, dar hai sa zicem ca macar e ceva.
Cel mai normal ar fi ca tu chiar sa il creezi :) adica sa-l scrii de la cap la coada in php, django sau ce mai folosesti tu pe acolo.. in fine..

SEO:
Facem “optimizare seo” prin adwords, alte campanii platite , rankam cu numele site-ului, cuvinte precum melci roz cu pete albastre in dambovita (si ne bucuram ca suntem pe prima pagina), la on-site nu stim sa scoatem un “?” pt cache-are de resurse statice sau dupa ce a facut altu’ inaintea noastra o gramada back-linkuri ce nu s-au indexat inca, dar le trecem in protofoliu. Nu mai comentez.


In videoclipul de mai jos(varianta lunga) fac un NFS pt un client si ii copiez continutul media de pe toate cele 72 de site-uri pe care i le-am facut(site-uri cu continut adult) deoarece cel 1 TB in RAID10 nu-i mai ajungea si am facut un raid 5 de 9 TB pentru media. Cand zic i le-am facut ma refer la tot de la instalare server, scripturi, scrappere, pluginu-uri custom etc, el a luat thema si am folosit wp.
Acum ce sa fac sa le trec pe toate 72? inainte de asta i-am mai lucrat la 31..

Ideea e simpla daca nu iti arata exact cu punct si virgula ce a facut, din ce stadiu a lucrat la site, daca a fost singurul care a lucrat la el, nu iti poti face o parere realista

Asa ca m-am decis sa fac un video la un proiect mai complex de la inceput pana la sfarsit sa vedeti exact ce si cum. Partea cu SEO nu am cum sa vi-o arat ca noah a fost de durata si a fost facuta demult.

Eu am fost singurul care a lucrat la site-ul asta, clientul nu s-a bagat si m-a lasat sa ma misc in voie. A fost inceput in 2016 este hostat pe serverul meu dar atunci nu am bagat decat produse din categoria navigatiilor dedicate. 2 ani mai tarziu ne-am hotarat sa bagam si alte produse si sa ii gasim o solutie de a se auto updatata cu preturile de la producator.

Nu o sa vedeti in video dar thema a fost foarte customizata (Back in 2016). Oricum o sa o trec la resurse dar nu o recomand decat daca vreti sa va pierdeti timpul facandu-i tot felul de artificii sa se miste acceptabil. Si in ziua de azi thema e inceata cu toate modificariile aduse daca nu nimeresti pe o pagina cache-ata.

Ma gandesc ca aceasta pagina o sa fie una dintre cele mai vizualizate(mai toata lumea ma intreaba de portofoliu si pana la urma m-am decis ca imi trebuie sa nu stau sa tot explic ca e irelevant in majoritatea cazurilor – ma refer la unele segmente din IT) asa ca mergand pe principiul asta, o sa trec totsi 3 site-uri aici inainte de video nu pt ca am lucrat enrom la ele ci pentru felul clientiilor de a fi, asa ca doresc sa-i recomand.

1.Marius(pifmedia.ro): Primul client, am facut SEO si modificari la versiunea vechie a site-ului si i-am instalat si modificat versiunea noua. E foarte ok ca si persoana si imi place ca e tipicar, adica noah la modul de 1-2 pixeli :)) Crede-ma am stat 2 luni sa bibilim site-ul cu verificari peste verificari. Eu sunt convins ca omu’ asta nu a predat niciodata o nunta “asa si asa” vreunui client de al lui. Fac pariu ca nu se ridica de la programele lui de editare pana nu iese treaba asa cum vrea el.

2. Radu(solarteamsolution.ro): Avea parca un prestashop sau nu mai tin minte noah, ideea e ca site-ul nu era responsive pe mobil. L-am mutat pe wp cu instalare si modificare de thema. Nu i-am facut si seo decat modificari pluginuri etc pt ca atunci cand a venit la mine deja era pe prima pagina dar in cadere. Dupa un timp am vb iara si am vazut ca sfaturile mele au prins, tot pe prima pagina ramasese. Cred ca este un om care se descurca si nu cred ca nu iti gaseste cea mai potrivita solutie pt tine daca vrei o jaluzea. Da, nu stie el cum e cu programarea dar numai faptul ca nu le are cu calculatorul dar s-a mentinut pe prima pagina din niste sfaturi practic ma face sa cred ca e f bun in domeniul lui

3.Merle(olovesm.com): Habar nu mai am ceva minor avea parca magento si vroia sa-i export produsele si sa le optimizez titlurile pt google shopping feed. I-am facut si un programel gratis sa faca treaba asta automat dar i-a fost frica sa-l instaleze, trebuia setat un cron din cpanel si noah nu se descurca/era reticenta ca nu stia ce am facut eu pe acolo in fine.. Nu conteaza o recomand pt ideea site-ului ei: Genti, Posete si alte accesorii lucrate manual facute din ramasitele materialelor din care se fac saltelele de yoga. Practic se duce la o fabrica producatoare de saltele de yoga le ia resturile pe care oricum le aruncau si le transforma in ceva si din asta traieste si are si angajati.


Sa trecem la oile noastre, zic
In primul rand video-ul l-am facut in engleza asa ca va explic aici ce si cum

Folosim:WORDPRESS, WP XMLRC, PHP, Python, Mongo, Bash Scripting, Docker, Authotkey, Imacros si Sqlite sa:

  • importam toata informatia deja existenta dintr-un site wordpress intr-un site local pastrand datele la care au fost publicate toate postarile(ma refer si la imagini aici) si intr-o baza de date mongo.
  • sa modificam anumite produse si anumite atribute in site si in mongo pastrand numai produsele de la un anumit producator
  • importam dintr-un fiser csv niste linkuri catre produsele producatorului intr-o colectie din mongo.
  • Facem 2 scrapperi: 1 crawler si un spider. Crawlerul v-a rula odata pe saptamana si este responsabil cu gasirea linkurilor catre produsele noi(comparand ce e in baza de date cu ce gaseste)(la prima rulare logic toate produsele sunt noi :)). De asemenea el trebuie sa tina cont ca un produs poate exista in mai multe categorii fapt pt care trebuie sa faca 2 colectii in mongo 1 pt produsele efectiv(filtrate astfel incat sa nu existe duplicate) si a 2-ua pentru categorii (aici link-urile catre produse normal trebuie sa se repete ca altfel nu ne ia categoria deci aceastea nu o sa fie filtrate) si spider-ul care o sa ruleze la 2 zile si este responsabil cu downloadarea informatiei pasate de crawler si trecerea ei in baza de date. Daca un produs este deja existent in colectie verifica pretul si starea stoculi. Daca este schimbat il updateaza daca nu nu.
  • Un updater care sa ruleze in fiecare zi si sa verifice daca produsele ce le-a downloadat spiderul exista in site. Daca exista verifica pretul si il schimba dupa caz. Daca nu exista trebuie sa il publice tinand cont de categoria in care este el.
  • Un poster de anunturi

Scrapper-ul va avea sta pe un calculator separat in cazul asta un Dell Workstation si va trebui sa ruleze 24/24. Cam asa arata schema:

Schema scrapper si poster
Schema scrapper si poster

Bun, Detalii configurare:

Server clienti(cel ce tine navigatia.ro):
– php 5.6, nginx, am extins xmlrpc’ul wp-ului astfel incat sa accepte info din serverul de scrapping. Este hostat pe ip dinamic de la RDS si nu se afla intr-o facilitate specializata e ca si cum ar fi hostat la mine acasa.

Serverul de scrapping:
– Docker (3 containere in ubuntu importante, Python cu TOR pt spider si crawler, PHP 7.1 pt poster(updater) si Mongo pt baza de date) + cronuri sa ruleze automat

Orice stick minim 512MB sa putem pune pe el programul de anunturi:
-Avem firefox portabil, Imacros, authotkey si SQLite. Ii trebuie Windows >= XP sa ruleze . Posterul se poate imbunatati mult cu Tesseract OCR spre exemplu sa citeasca automat captcha si noah se mai pot baga site-uri, in sfirsit se mai poate munci la el dar pt ce ne trebuie noua in cazul acesta e suficient.

Localele:
WTSERVER cu php 5.6 ce tine 3 site-uri ip 192.169.1.101:
– navigatia.io (clona dupa vechiul navigatia.ro) site-ul din care copiem,
– navigatia.vv(site-ul nou cel pe care o sa-l pastram si il transformam in noul navigatia.ro
– navigatia.uo asta este facut din 2 motive:

  1. sa vedem ca merge si pe alte theme
  2. ca sa fac programul sa posteze pe mai multe site-uri odata. Poate vreau sa-mi fac mai mult de un site cu produsle astea, sau cu mici modificari sa imi fac vreo 20 de site-uri fiecare specializat pe o categorie de produse..

Oracle VM ce contine scraperul, posterul si baza de date ip 192.168.1.104 cu php 7.1, python 2.6

Am incercat sa mimez conditiile exacte ale serverului si viitorului scrapper.

Complexitate:

  1. Copiere site vechi: Daca era numai de postat continut nou era mult, mult mai simplu, dar a trebui sa copiez site-ul vechi si nu oricum.
    • Nu am putut da dump la baza de date deoarece era foarte mare foloseam essential grid, care imi adauga extra custom fields la fiecare produs si alte artificii, in sfarsit ideea e ca baza de date era foarte mare si trebuia redusa. NU am gasit plugin-uri gata facute sa imi ia si yoast si data exacta a publicarii unei poze. M-am gandit sa fac eu niste plugin-uri sa exporte categoriile si postarile intr-un fisier csv dar aveam alte probleme: prin descriere avem galerii si diferite imagini nu neaparat inserate cu wp deci trebuia sa stai sa le iei url-urile si sa le downloadezi dupa care trebuia sa tii minte de unde ai downloadat si sa le inlocuiesti, dupa trebuia sa le importi in baza de date si sa le uploadezi in site-ul nou. Treaba asta se putea face cu XMLRPC-ul mai ales pt updater in plus o poti face asa fel incat sa te folosesti de cod si pt alte site-uri.
    • Trebuia sa uploadez imaginea/postarea cu data exacta folosita in momentul publicarii. Site-ul era deja indexat in google cu o imagine spre exemplu /2016/03/bmw.jpg ee daca o upload-ai direct in noul site era de forma 2018/06/bmw.jpg si normal google primea 404. Dupa trebuia sa stai sa faci 301 redirect la toate pozele deoarece facem si seo.. si asta pt un site la site-ul urmator trebuia sa faci lafel
    • Categoriile de produse au “copii” si “nepoti”. E, cand le importi tre sa mergi recursiv astfel ca sa descoperi parintele. ex vb de id-uri (257 are parinte pe 100, 100 are parinte pe 53, 53 are parinte 0)
    • Produsele au cross-sell. Trebuie sa introducem id-urile vechi in colectie tinand cont de id-ul nou pana cand dam de id-ul la care cross-selul face referire. Dupa trebuie updatate toate produsele ce fac referire la acel id
    • Partea mai usoara a fost ca nu erau produse variabile. Daca ar fi fost as fi schimbat tactica si as fi folosit WOO REST API.
  2. Scrapper:
    • Nu toate produsele au avut pretul meta setat acelasi cu cel afisat.
    • Unele imagini erau prea mari si incarcau site-ul greoi
    • Unele produse aveu niste fraze ce faceau referire la magazinul producatorului ce trebuiau scoase.
    • Existau niste produse ce ofereau service in toata tara iar clientul are service-ul numai in bucuresti
    • Unele produse erau combinate
    • Unele imagini nu existau in meta dar existau in “display-ul produsului” ca sa zic asa si invers
  3. Updater:
    • Trebuiau trecute “outofstock” toate produsele unui producator.
    • Cel mai complicat lucru a fost sa corelez categoriile producatorului cu cele existente, dupa cum am spuns daca nu exista site-ul dinainte era altceva. Cand a fost facut site-ul categoriile au fost facute astfel incat sa integram produsele a doi producatori. Ramanand decat cu unu categoriile acestuia nu au fost lafel cu cele existente. In plus nu aveam cum sa copiez mot-a-mot categoriile producatorului(pt seo ma refer). Ex: Range rover si Rover se afla in categoriile Navigatii dedicate, Interfete, Blootooth etc. Cauti tu in baza dupa Rover dar iti apar “n” rezultate. Nu poti cauta dupa id ca noah id-ul la urma urmei e variabil si la urmatorul site nu o sa mai fie acelasi. In plus un produs se poate afla in mai multe categorii( VW Golf, VW Passat, Skoda Octavia..). In sfarsit daca ai vazut 300 filmul “This was sparta”

Explicatiile in timpul video-ului sunt in engleza, nu am mai avut timp sa fac si variata in romana…
Varianta Lunga:

Varianta Scurta(viteza 2x chiar nu am putut sa fac un film din care sa reiasa ce am facut mai mic de atat)

Statistici: am scris(incluzand cometarii si liniile goale)(nu includ liniile de cod folosite de librariile ajutatoare ma refer strict la ce am scris eu):
PHP: 6573 linii de cod din care aproximativ 511 sunt setariile(bine incluzand array-urile de setari)
Python: 1207
Autohotkey : 2040 isi generaza si fisierul de imacros
WP extending XMLRPC: 935
Bash,.YML,Dockerfile,.conf: 1022

Librarii folosite si multumiri pt munca lor:
https://github.com/letrunghieu/wordpress-xmlrpc-client
https://github.com/parsecsv/parsecsv-for-php
https://github.com/AHK-just-me/Class_SQLiteDB

Theme folosite:
Nielsen
Porto

Alte softuri/plugin-uri/sisteme folosite :
PHP, Python, Scrapy, AutoHotKey, Imacros, Mongodb, Mariadb, RoboMongo, Nginx, SQLite, Docker, Ubuntu, Oracle Virtual Box, WTServer, Atom ,Notepad++ ,Firfox Protabil, OBS, Yoast, WordPress, Woocommerce, WP Super Cache si desigur stack overflow si google



TEL: 0720 617 783



Ultima Modificare: 6 iulie, 2018 de wrq

SEO, Programare, Creare Website