Zanimljive programerske fore

2

Zanimljive programerske fore

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Srki_82 ::To je implementirano u Eclipse IDE-u (kao što već piše gore)...Generalno, formatiranje prema prethodno definisanom formatu se u Eclipse-u radi na Ctrl + Shift + F. Znači, kucate kod na bilo koji način, a onda samo pritisnete ovu kombinaciju tastera i dobijete lepo i uredno formatiran kod. Dobra stvar je što svako može podesiti format (Perferences -> Java -> Code Style -> Formater) prema svojim potrebama i afinitetima.

Vezano za konretnu foru, može se podesiti da recimo deli sve linije koda duže od 80 karaktera (može da se podesi broj po želji).



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12391

Napisano: 15 Jul 2014 0:56

Nije baš programerska ali pomaže kod nizova Cool

Bilo koji sheet editor. Prva kolona ime niza, druga kolona indeks, treća kolona znak jednakosti, četvrta vrednost, peta tačka zapeta.


Ukoliko držite za veće projekte nizove na ovaj način :



Veoma je lako da kopirate sve vrednosti kao na prvom SS-u i samo ih prebacite u skriptu.
Na sve to, lepo izgleda Very Happy



Dopuna: 25 Jul 2014 4:12

Ovaj kod :
if (hp > 20) { poruka = "Igrač je živ"; } else { poruka = "Igrač nije živ" }

Može da se napiše u jednoj liniji :

poruka = hp > 20 ? "Igrač je živ" : "Igrač nije živ" ;

Slična sintaksa važi za C#, dok za boo morate pisati dužu varijantu :
http://unity3d.com/learn/tutorials/modules/interme.....y-operator

Dopuna: 10 Okt 2014 17:48

Lazy programmer is lazy ...

Ovo važi za C# i MonoDevelop

Monodevelop može sam da napravi for petlju za vas.

Napišite ključnu reč for, pritisnite tab dva puta a potom bilo koji taster. Rezultat možete videti na gifu :


Stim što bi se u pravoj skripti petlja pametno ispisala i MD bi verovatno pokupio prave vrednosti.
Isto važi za druge petlje.



offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Srki, to su snippet-i, i VS takođe radi sa njima. Very Happy

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12391

Napisao sam upravo aplikaciju za prijatelja kome je trebala aplikacija koja će potpuno da mu onesposobi rad na kompu na tri minuta.

To podrazumeva da aplikaciju nikako ne može da ugasi jednom kada se aktivira.

Guglao sam nešto i naravno naišao na gazilion linija koda koje onesposobljavaju tastaturu, čačkaju registry itd. međutim na kraju sam sve to uspeo sa par linija koda i malo "varanja". Evo u čemu je stvar Very Happy

  Private Sub Spammer_Tick(sender As Object, e As EventArgs) Handles Spammer.Tick         Me.Location = New Point(0, 0)         Me.TopMost = True     End Sub   Private Sub Form2_LostFocus(sender As Object, e As EventArgs) Handles Me.LostFocus         Me.Focus()     End Sub Private Sub Form2_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing         Me.Show()          e.Cancel = True     End Sub

Kada se skine fokus sa forme, bilo da se to uradi ALT TAB, CTRL, ALT DEL, WIN kombinacijama... forma će se vratiti u fokus.

Samim tim se onemogućava pristup task manageru. Eventualno se dospe do ekrana sa izbornikom, međutim bilo koja druga akcija i vraćanje na explorer ponovo osvežava formu.
Ako neko proba ALT F4 kombinaciju otkazuje se event gašenja i za svaki slučaj prikazuje forma.

Nije ni blizu efikasna za neku pro upotrebu ali za ono što je njemu trebalo radi savršeno. Nismo morali da čačkamo registry niti čačkamo bilo šta sistemsko.

Posle mnogo godina sam ponovo koristio VS, brzina pisanja koda je nenormalna u odnosu na alate koje koristim u drugom okruženju u kome radim Very Happy

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12391

Da obrišete prazne linije u VS 13 :

1. Selektujte kod koji želite da formatirate
2. CTRL + H da otvorite Search & Replace
3. Selektujte "Use regular expressions"
4. U Search upišite :
^\r\n
Replace ostavite prazno
5. Kliknite na replace all

Ovo radi drugačije u prethodnim verzijama, više o tome http://stackoverflow.com/questions/12453160/remove.....ual-studio

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12391

Opet više rešenje nego nešto kul (WPF) :



Imamo listu kao ovu iznad.
Šablon liste diktira ItemTemplate, koji se sastoji od panela, labela i dugmeta.
Lista je povezana na List<DeviceInfo>.
Želimo da klikom na dugme obrišemo unos iz List<DeviceInfo> koji odgovara unosu sa UI liste na kom se nalazi dugme:

Našao sam jednostavno rešenje nakon više časova guglanja i čitanja kilometara koda Very Happy

XAML definicija dugmeta :
<Button Content="Remove" Width="100" Height="25" Click="RemoveSelectedDevice" />

Kod u klasi prozora na kom se dugme nalazi :
 private void RemoveSelectedDevice(object sender, RoutedEventArgs e)         {             var currentItem = ((ListBoxItem)lbPlaybackDevices.ContainerFromElement((Button)sender)).Content;             DeviceInfo tmp = (DeviceInfo)currentItem ;             MessageBox.Show(tmp.deviceName);         }

Ovim se zaobilazi upotreba još dve klase sa mnogo koda.
Mislim da je skroz OK rešenje za ovo što meni treba.
Mada, koliko sam vremena potrošio da nađem neko elegantno rešenje, mogao sam i sam da napišem te dve klase sa tonom koda. cap cap

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Napisano: 16 Feb 2016 13:00

Novi ES6 standard omogućava korišćenje funkcija u formatu nizova u JS:

app.get('/', (req, res) => {    db.collection('quotes').find().toArray((err, result) => {       if (err) return console.log(err);       res.render('index.ejs', {quotes: result});    }); });

umesto prethodnog

app.get('/', function (req, res) {    db.collection('quotes').find().toArray( function (err, result) {       if (err) return console.log(err);       res.render('index.ejs', {quotes: result});    }); });

Dopuna: 21 Feb 2016 17:56

Na GitHub-u je sada dostupno dodavanje fajlova prevlačenjem u pregledač!
https://help.github.com/articles/adding-a-file-to-a-repository/

Dopuna: 03 Apr 2016 19:59

Napisao sam juče Bash skriptu koju koristim u trenutnom projektu i koja mi u velikoj meri olakšava rad:

- Prvo vrši ispitivanje da li postoje kopije originalnih fajlova ( index.haml => index_copy.haml, style.scss => style_copy.scss ), a ukoliko ne postoje kreira ih.
- Nakon toga upoređuje kopije i originalne fajlove; ukoliko su izmenjeni u međuvremenu, prevodi HAML u HTML i SCSS u CSS.
- Nakon prevođenja ponovo pravi kopije originalnih fajlova.

Ovako ne moram stalno da se prebacujem u Terminal već mi samo stoji upaljen tokom rada.

while true; do        # If HAML copy doesn't exist    if [ ! -f index_copy.haml ] ; then              # Create copy of 'index.haml'       echo -e "\e[1m\e[33mCreating 'index_copy.haml' file."       cp index.haml index_copy.haml              # Check if everything is right       if [ $? -eq 0 ]; then          echo -e "\e[1m\e[36mDone.\n"       else          echo -e "\e[1m\e[32mError!\n"       fi    fi    # If SCSS copy doesn't exist    if [ ! -f css/style_copy.scss ] ; then       # Create copy of 'style.scss'       echo -e "\e[1m\e[33mCreating 'style_copy.scss' file."       cd css       cp style.scss style_copy.scss              # Check if everything is right       if [ $? -eq 0 ]; then          echo -e "\e[1m\e[36mDone.\n"       else          echo -e "\e[1m\e[32mError!\n"       fi       cd ..        fi    # Check if content isn't same in both copies    if ! cmp -s "index.haml" "index_copy.haml" || ! cmp -s "css/style.scss" "css/style_copy.scss" ; then              # Process HAML       cp index.haml index_copy.haml       echo -e "\e[39m-------------------------------"       echo -e "\e[1m\e[34mProcessing HAML..."       haml index.haml index.html       # Process SCSS       cd css       cp style.scss style_copy.scss       echo -e "\e[1m\e[32mProcessing SCSS..."       sass style.scss style.css       cd ..       # Show output message       echo -e "\e[1m\e[36mDone."       echo -e "\e[1m\e[39m-------------------------------\n"    fi done

Dodao sam i komentare u kod, pa eto, možda nekom bude od koristi, barem kao ideja...

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12391

(goto) 2>nul & del "%~f0"

Briše batch fajl i neće generisati grešku poput "exited with code N".

Strašno praktično kada imate neke post-build evente.
U mom slučaju, jedna od biblioteka koju koristim generiše lng fajlove koji mi nisu potrebni, ne postoji način da se to isključi. Tako da imam bat fajl koji briše te foldere i nakon toga briše sebe.

Fajl pozivam komandom :
call "$(ProjectDir)$(OutDir)PostBuild.bat"

i to je to. Obriše foldere, obriše sebe, završi posao.

Jedina začkoljica koju sam primetio - ako napravite običan tekst fajl i nabacite .bat ekstenziju u VS-u, neće biti upotrebljiv. Rešenje za to je pravljenje običnog tekst fajla iz Windowsa, zamena ekstenzije i ubacivanje tog fajla u VS. Zatim promenimo postavke tako da se fajl uvek kopira prilikom build eventa.

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12391

 _list.RemoveAll(item => item.isChecked);

Linija koda iznad briše sve stavke iz liste kojima je vrednost isChecked boola true.

Više o Lambda izrazima : https://msdn.microsoft.com/en-us/library/bb397687......2147217396

Drugi način da iz jedne petlje brišete unose iz liste :

 for(var i = _list.Count-1; i>=0; i--)             {                 if (_list[i].isChecked)                 {                     _list.RemoveAt(i);                 }             }

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Jedan od Guglovih inženjera (Jeff Dean) implementirao je web server u jednom printf() pozivu koji je sada deo front-end-a na Guglovoj početnoj strani - ovo je interna šala u Gugl-u, međutim, Yohanes Nugroho je koristeći ovu ideju napisao sličan program:

#include <stdio.h>   int main(int argc, char *argv[]) {  printf("%*c%hn%*c%hn"   "\xeb\x3d\x48\x54\x54\x50\x2f\x31\x2e\x30\x20\x32"   "\x30\x30\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d"   "\x74\x79\x70\x65\x3a\x74\x65\x78\x74\x2f\x68\x74"   "\x6d\x6c\x0d\x0a\x0d\x0a\x3c\x68\x31\x3e\x48\x65"   "\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21\x3c\x2f"   "\x68\x31\x3e\x4c\x8d\x2d\xbc\xff\xff\xff\x48\x89"   "\xe3\x48\x83\xeb\x10\x48\x31\xc0\x50\x66\xb8\x1f"   "\x90\xc1\xe0\x10\xb0\x02\x50\x31\xd2\x31\xf6\xff"   "\xc6\x89\xf7\xff\xc7\x31\xc0\xb0\x29\x0f\x05\x49"   "\x89\xc2\x31\xd2\xb2\x10\x48\x89\xde\x89\xc7\x31"   "\xc0\xb0\x31\x0f\x05\x31\xc0\xb0\x05\x89\xc6\x4c"   "\x89\xd0\x89\xc7\x31\xc0\xb0\x32\x0f\x05\x31\xd2"   "\x31\xf6\x4c\x89\xd0\x89\xc7\x31\xc0\xb0\x2b\x0f"   "\x05\x49\x89\xc4\x48\x31\xd2\xb2\x3d\x4c\x89\xee"   "\x4c\x89\xe7\x31\xc0\xff\xc0\x0f\x05\x31\xf6\xff"   "\xc6\xff\xc6\x4c\x89\xe7\x31\xc0\xb0\x30\x0f\x05"   "\x4c\x89\xe7\x31\xc0\xb0\x03\x0f\x05\xeb\xc3",   ((((unsigned long int)0x4005c8 + 12) >> 16) & 0xffff),   0, 0x00000000006007D8 + 2,   (((unsigned long int)0x4005c8 + 12) & 0xffff)-   ((((unsigned long int)0x4005c8 + 12) >> 16) & 0xffff),   0, 0x00000000006007D8 ); }

Verzija jednostavnija za izmenu:

#include <stdio.h> #include <stdlib.h> #include <stdint.h>   #define FUNCTION_ADDR ((uint64_t)0x4005c8 + 12) #define DESTADDR 0x00000000006007D8 #define a (FUNCTION_ADDR & 0xffff) #define b ((FUNCTION_ADDR >> 16) & 0xffff)   int main(int argc, char *argv[]) {     printf("%*c%hn%*c%hn"         "\xeb\x3d\x48\x54\x54\x50\x2f\x31\x2e\x30\x20\x32"         "\x30\x30\x0d\x0a\x43\x6f\x6e\x74\x65\x6e\x74\x2d"         "\x74\x79\x70\x65\x3a\x74\x65\x78\x74\x2f\x68\x74"         "\x6d\x6c\x0d\x0a\x0d\x0a\x3c\x68\x31\x3e\x48\x65"         "\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21\x3c\x2f"         "\x68\x31\x3e\x4c\x8d\x2d\xbc\xff\xff\xff\x48\x89"         "\xe3\x48\x83\xeb\x10\x48\x31\xc0\x50\x66\xb8\x1f"         "\x90\xc1\xe0\x10\xb0\x02\x50\x31\xd2\x31\xf6\xff"         "\xc6\x89\xf7\xff\xc7\x31\xc0\xb0\x29\x0f\x05\x49"         "\x89\xc2\x31\xd2\xb2\x10\x48\x89\xde\x89\xc7\x31"         "\xc0\xb0\x31\x0f\x05\x31\xc0\xb0\x05\x89\xc6\x4c"         "\x89\xd0\x89\xc7\x31\xc0\xb0\x32\x0f\x05\x31\xd2"         "\x31\xf6\x4c\x89\xd0\x89\xc7\x31\xc0\xb0\x2b\x0f"         "\x05\x49\x89\xc4\x48\x31\xd2\xb2\x3d\x4c\x89\xee"         "\x4c\x89\xe7\x31\xc0\xff\xc0\x0f\x05\x31\xf6\xff"         "\xc6\xff\xc6\x4c\x89\xe7\x31\xc0\xb0\x30\x0f\x05"         "\x4c\x89\xe7\x31\xc0\xb0\x03\x0f\x05\xeb\xc3"     , b, 0, DESTADDR + 2, a-b, 0, DESTADDR ); }

http://www.informatika.bg/jeffdean

Ko je trenutno na forumu
 

Ukupno su 859 korisnika na forumu :: 21 registrovanih, 8 sakrivenih i 830 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: aleksmajstor, crnitrn, Dimitrise93, djboj, Dovla, Istman, Komentator, Kubovac, Luka Blažević, mikrimaus, mile23, milimoj, mnn2, ozzy, Rogan33, savaskytec, Srki94, tubular, vathra, virked, zdrebac