msm

msm
2017-07-12 12:34

Udało się! Po stoczeniu nierównej walki z mongodb, php, yarnem, gulpem, composerem i jeszcze kilkoma, zainstalowałem w końcu Coyote u siebie lokalnie!

AMA.

EntityPamerano

Pierwszy!
Wolałbyś walczyć z kaczką wielkości konia czy z setką koni wielkości kaczki?

msm

Wolałbym walczyć z setką koni wielkości koni niż kojotem wielkości kaczki.

grzegorzd

No to tradycyjnie... Ile zarabiasz

msm

Na 4programmers zero :(.

twonek

Jakie jest hasło do Twojego konta na 4p?

msm

Obecne hasło to ***************.

edit: Ech, zapomniałem że kiedy wpiszesz na mikroblogu swoje hasło, to zmienia się na gwiazdki. 4programmers przewiduje wszystko!

vpiotr

moje hasło to ############

fasadin

@msm kiedy zostana zrobione wykresy za poprzedni rok i kiedy zostanie naprawione autologowanie do czatu :D?

msm

@fasadin: Dobrze że pytasz! Na pierwsze pytanie nie odpowiem, ale to całe instalowanie coyote to po to było, żeby móc zrobić commita (https://github.com/adam-boduch/coyote/pull/370 - mój pierwszy pull request do coyote!) potrzebnego do naprawienia tego problemu :P.

Garen_eye

Jak z wydajnością Laravela dla takich portalów? Pytam, bo mam wtyczkę w przeglądarce, która analizuje z użyciem czego postawiona jest strona i tak w sumie rzadko spotykam się ze stronami na Laravelu, więc się zastanawiam why.

vpiotr

@Garen_eye: to masz raczej słabą tą wtyczkę.

Garen_eye

@vpiotr ok to może być prawda, ale mówisz to z doświadczenia, czy masz jakieś statystyki pod ręka?

vpiotr

@Garen_eye: pytasz o Laravela, tego co wg niektórych źródeł ma 43% rynku?

czysteskarpety

mnie to śmieszy, że nikt jeszcze nie krytykuje Coyote (nikt nie chce podpaść Adamowi), bo przecież "ten pod język PHP" plus na dodatek jQuery :D

vpiotr

@czysteskarpety: a zrobiłeś kiedyś własną stronę plus framework? Tzn cały serwis od a do z, nie jakiś jeden formularz. Wiesz ile to roboty? A wiesz na czym stoi np. taki Oreilly albo Allegro?

czysteskarpety

@vpiotr: wiem ile to roboty i sam używam jQuery jak i php, ale sam wiesz, że wiele osób tu kląska na te języki/libsy więc trochę szach mat ;)

Adam Boduch

@msm: vagranta nie próbowałeś postawić? :) @Marooned się napracował ;) P.S. Może jest tu jakiś znawca dockera, który potrafiłby kontenery postawić? :)

vpiotr

@Adam Boduch: No właśnie, miałem zapytać dlaczego mu tu w ogóle rozmawiamy o stawianiu, skoro jest coś takiego jak Vagrant i Docker. Piszesz skrypt do vagranta i każdy uruchamia swoją instancję jedną komendą - przynajmniej w teorii.

vpiotr

@Marooned: jeśli chodzi o npm to może to pomoże: https://4programmers.net/Pastebin/7127 (instrukcja dla Linux Mint, ale może zadziała na tym co tam używacie)

Marooned

Ja już więcej póki co przy tym nie grzebię (E_NOTIME), ale to ekhm było do @msm ;-) po to dorobiłem się siwych włosów by używać ;)

msm

@vpiotr: @Adam Boduch: przyznam że się bałem próbować Vagranta stawiać, pamiętając co z nim @Marooned kiedyś przeszedł (może niesłusznie) - z przyzwyczajenia postawiłem na kontenerze ale lxc. Spróbuję użyć Vagranta, przyznam że instrukcja instalacji brzmi dużo prościej ;].

A jeśli chodzi o dockera, to piszę różne Dockerfile dzisiaj w pracy od czterech godzin i mam dość dockera na najbliższą przyszłość :P.

vpiotr

@msm: a w dockerze nie można podłączyć zwykłych skryptów bash (czyli takich które i tak poniekąd piszesz konfigurując serwer)?

msm

Można, w sumie to robię głównie (w sensie, piszę skrypty basha). Przy czym jednocześnie walczę z niedziałającymi Dockerfilami innych, co jest dość denerwujące.

grzesiek51114

@msm: coś musiałeś jednak pomylić. Kiedy wpisuję u siebie http://localhost:8001/Forum to nie mogę się zalogować :P :P

Marooned

pamiętając co z nim @Marooned kiedyś przeszedł (może niesłusznie) - słusznie, ale to była wypadkowa mojej nikłej znajomości linuksa i vagranta, ale obecnie to już 3 polecenia i cały kojot stoi (dawno nie sprawdzałem, mam nadzieję, że nadal działa)

karolinaa

Obraz docker by się przydał

Marooned

Docker nie działa generalnie pod Windows poniżej wersji 10, więc nie było sensu kopać się z koniem. Ale oczywiście nic nie stoi na przeszkodzie, by fani Dockera zakasali rękawy i zmierzyli się z problemem. Repo jest otwarte, do dzieła!

vpiotr

Docker już dzisiaj działa na Win7 - wystarczy zainstalować go w... wirtualce VMware :) (sprawdzone w korpo).

Marooned

No, czyli nadal kopanie się z koniem ;) To ja chyba jednak wolę vagrant up i skupić się na istotnych sprawach ;)

vpiotr

Ja póki co nie używam obu, ale jakoś sensowniejszy jest dla mnie vagrant (chociaż niektórzy ponoć używają obu).

Marooned

@karolinaa: daj znać jak skonfigurujesz i dasz pull requesta

wiciu

Myślałem, żeby tam podesłać PR z konfiguracją dockerową, ale najpierw musiałbym lepiej zapoznać z tech stackiem, jaki jest użyty w tym projekcie. Może w wolnej chwili spróbuję się pobawić :-).

nie100sowny

No to podpinaj domenę i robimy konkurencję :) Tylko 50000 punktów reputacji dla mnie :)

msm
2017-04-20 22:18

Znudzony abstrakcjami w Javie? Uważasz że C to język wysokiego poziomu? Pisanie w asemblerze jest dla Ciebie za proste? Kod maszynowy czytasz jak prozę, a tablicę opkodów znasz lepiej niż tabliczkę mnożenia?

Może czas zejść poziom niżej?

Przez święta stwierdziłem że koniec z tymi silikonowymi abstrakcjami, i czas stworzyć własne (proste) CPU- przy pomocy FPGA.
Na screenie wynik działania prostego programu, zdefiniowanego przez statyczny RAM:

  signal Memory: MemoryStore := (
    0 => X"0302", -- LDL A, 2
    1 => X"0401", -- LDL B, 1
    2 => X"2334", -- ADD A, B
    3 => X"0E02", -- JMP 02
    others => X"0000"
  );

Kilka słów wytłumaczenia:

  1. Wykonywany program to prosta pętla a=2; while (true) { a += 1}
  2. Architektura jest 16bitowa, czyli rejestry mają po 16 bitów. Co ciekawe, technicznie w mojej architekturze bajty też są 16bitowe (najmniejsza adresowalna jednostka pamięci to 16 bitów!)
  3. Format instrukcji jest bardzo prosty, wręcz trywialny: pierwszy nibble to opcode (typ operacji), drugi to rejestr docelowy, pozostały bajt to albo dwa rejestry źródlowe albo stała:
    0 -> LDL A Imm16 (load low 8 bits of register)
    1 -> LDH A Imm16 (load high 8 bits of register)
    2 -> ADD A B C (A = B + C)
    3 -> SUB A B C (A = B - C)
    4 -> MUL A B C (A = B * C)
    5 -> DIV A B C (A = B / C)
    6 -> XOR A B C (A = B ^ C)
    7 -> OR A B C (A = B | C)
    8 -> AND A B C (A = B & C)
    9 -> CMV A B C (if ((C & FLAGS) != 0) { A = B; })
    A -> LDM A B Imm8 (A = RAM[A + C])
    B -> STM A B Imm8 (RAM[A + C] = B)
  4. Instruction pointer to normalny rejestr (o numerze 14) (tak jak w ARM, inaczej niż w x86), więc zapis do rejestru 0xE jest równoważny skokowi. Jeszcze nie zaimplementowane, ale w planach rejestry to:
    0 -> NULL (jak w MIPS - zawsze zero)
    1-13 -> general purpose registers
    14 -> instruction pointer
    15 -> flags
  5. Procesor zajmuje 5 cykli na opcode (patrz na screenie: state, clock): FETCH -> DECODE -> REGREAD -> ARITH -> WRITEBACK. W planach jest skrócenie tego (format instrukcji jest prosty, więc DECODE jest niepotrzebne) i dodanie superskalarności (wykonywanie 2 instrukcji na raz).
  6. Na potrzeby testów stworzylem też własny RAM - ot, magia FPGA (było to zaskakująco proste). Na drugim (prostszym) screenie, wynik testu RAMu.
  7. Jeśli ktoś się nudzi, kod wrzuciłem na githuba: https://github.com/msm-code/msm-processing-unit. Nie jest to najaktualniejsza wersja, ale przynajmneij działa.

Morał: Można niżej niż asembler. Można niżej niż kod maszynowy. ...czy warto? Na pewno napisanie własnego procesora to ciekawe doświadczenie :P. Nie udało mi się go jeszcze wypalić na fizycznej płytce (posiadam takową - programowalną tylko z tego obrzydliwego xilinxa), razem z memory-mapped IO, ale prędzej czy później...

akrasuski1

Phi... niski poziom to lutowanie cpu z pojedynczych tranzystorów :P

grzesiek51114

@msm zostaje Ci jeszcze tylko zaprojektować CPU w Minecrafcie i będziesz mógł nazwać siebie wszechprogramistą ;) ...albo wielkim elektronikiem jak w Panu Kleksie ;)

alagner

Czemu nie w Verilogu albo SystemC (aczkolwiek nie wiem czy ten ostatni jest syntezowalny)?

J0ras

Ja kiedyś robiłem na kartce papieru moduł za pomocą metody karnaugha, ale widzę, że vhdl jest do tego bardziej przystosowany.

msm

@alagner: Nad verilogiem się zastanawiałem chwilę. Ostatecznie wybrałem VHDL bo miałem z nim trochę doświadczenia już z kiedyś, oraz wydaje się prostszy dla programisty. A SystemC i podobnych celowo unikałem, bo za bardzo chowają abstrakcję i nie wiadomo co się dzieje pod spodem (a chciałem w miarę nisko zejść)! No i z tego co wiem syntetyzuje sie z nich mało wydajny kod.

msm

@J0ras: można i tak. Jak rozpiszesz cały procesor na kartce to szacunek :P @Shalom me irl.

alagner

@msm w SystemC akurat spokojnie można też nisko pisać, aczkolwiek jak uczyłem się go (matko, kiedy to było, stara dupa jestem ;)) to nie dawało się opisów w nim zaimplementować w sprzęcie, był jedynie do modelowania. Co do Veriloga - obecnie jest praktycznie tak samo dojrzały jak VHDL a ma sporo fajnych narzędzi do weryfikacji. A sprzęt wygenerowany po syntezie w obu jest raczej podobny (poza rocket science i benchmarkami oczywiście), miałem okazję robić tester interfejsu VGA w jednym i drugim i wyszło 1:1 to samo. Problem leży bardziej w totalnie kijowych optymalizatorach i słabości narzędzi, przez co trzeba serio pisać kod zgodny z tym co się syntezować, faktycznie optymalizować wcześnie i nie cudować z abstrakcjami. Także metoda Karnaugha (@J0ras) wcale nie jest taka bezsensowna, jest wręcz dobrym dodatkiem, bo automatyczne optymalizatory lubią się pogubić czasem.

msm

@alagner hmm, to popatrzę na SystemC kiedyś. Nie wygląda tak źle po dokładniejszym przyrzeniu się - pamiętam że kiedyś czytałem sporo negatywnych opinii i tym sie sugerowałem. Verilog jasne - bardzo dobry jest, po prostu coś trzeba było wybrać a VHDL sie wydawał przyjaźniejszy.

stryku

Gratki (: też kiedyś myślałem, żeby zrobić coś jeszcze niżej ale do vhdl mnie studia zniechęciły. Może kiedyś

Alag

Dlaczego nie lubisz w Xilinx? Mam pozytywne doświadczenia. Czego używasz do edycji kodu?
Po odpaleniu takiego projektu z procesorem na FPGA, komputer przestał być "magiczny" dla mnie :)

alagner

@Alag bo Altera i Lattice mają ciekawsze układy? @msm tak na luzie bardziej: https://www.youtube.com/watch?v=gM2hnra55Hs

MuadibAtrides

Jest taki kurs "from nand to tetris". Opowiada o tym, że jesteśmy programistą z bramkami nand i bardzo chcemy pograć w tetrisa. Tłumaczy jak wyjść z pojedyńczej bramki, zrobić cpu, zaprogramować asm, poziom ciut wyższego poziomu i w.końcu tetrisa. W nagrodę zagramy w tetrisa. Tak jakoś mi się skojarzyło z rym kursem.

Alag

@alagner: Altera to teraz już z logo Intel :) ale czy ciekawsze? Zależy co zamierzamy zrobić. U @msm w kodzie nie widziałem żadnych specjalnych komponentów na daną platformę

talion

Proszę Cie... o 1... nie wyjeżdżaj z tego kraju :)

alagner

@Alag jeszcze kwestia co kto lubi. Ja akurat pracowałem na jednym i drugim i narzędzia Altery zdecydowanie bardziej mi przypasowały.

msm
2017-01-30 15:09

@woolfik pisał że wpisy na mikroblogu za mało techniczne, więc pochwalę się czymś swoim: :P

analiza nymaima, popularnego ostatnio trojana bankowego: https://www.cert.pl/news/single/nymaim-atakuje-ponownie/

#malware #reverse-engineering

czysteskarpety

w końcu jakiś konkretny content, bo niektórzy to robią śmietnik na tymy mikroblogymy

furious programming

Bardzo fajny artykuł i jak zwykle świetna robota - pogratulować.

hit02

Właśnie skończyłem czytać. Wchodzę na 4programmers, a tu link do artykułu na głównej stronie. :D Ciekawy. Dobrze się czyta.

woolfik

Dobrze @msm, że na Ciebie zawsze można liczyć :)

vpiotr

Długie, ale znalazłem to czego szukałem ("Windows").

grzesiek51114

To trzeba mieć łeb, naprawdę!

karolinaa

zajebiste - tymczasem na Linuxie - wirusów brak

rafal20-1988

@karolinaa czy brak to nie do końca się z tym zgodzę ale na pewno jest ich milion razy mniej niż na Windowsa:)

grzesiek51114

@karolinaa ale burdel w systemie porównywalny :P

Westen

Czytałem, ale i tak + za propagowanie tematów programowaniu a nie jakieś napir*** pałkami w rurę :|

czysteskarpety

napir*** pałką też trzeba umieć...

Shalom

@Westen coś tu sugerujesz? :P

msm

@vpiotr - no desktopowy malware to praktycznie wyłącznie Windows. @karolinaa - chociaż to bardziej dlatego, że nie opłaca się go tworzyć :P.

@grzesiek51114 @InterruptedException - po części to wygląda może trudno, że to sporo researchu skondensowanego w jednym artykule. W tydzień to nie powstało :P.

reszta - dzięki! :>

vpiotr

@msm: dokładnie tak jest. Niszowy system to najlepsza forma obrony przed robactwem - przynamniej dla niewtajemniczonych, którzy nie chcą poświęcać 90% mocy na antywiry (ktoś jeszcze ma w pracy McAfee?).

somekind

Na Linuksy nie ma wirusów, bo hakerzy są zbyt litościwi, żeby dokładać dodatkowego cierpienia ludziom, którzy całe życie walczą z konfiguracją sterowników do myszki i prowadzą flejmy o wyższości swojej dystrybucji nad innymi.

grzesiek51114

@kate87 @somekind ważne, że są szczęśliwi :)

msm
2016-03-30 14:12

Kto jest najszczęśliwszym użytkownikiem forum? Jak bardzo postinkrementacja rozpleniła się w dziale C++? Na te i inne pytania odpowie wątek Spóźnione wykresy za 2015 rok

furious programming

@msm: zmieńmy nazwę działu na ++C, w ramach walki z postinkrementacją ;P

plx211

Ban za uzycie postinkrementacji!

woolfik

@furious programming lepiej zmienić nazwę języka bo nawet ona jest za postinkrementacją :D

msm
2016-01-13 15:52

Samodzielne IDE do C# od JetBrains (ciekawostka):

http://blog.jetbrains.com/dot[...]3/project-rider-a-csharp-ide/

Marszal

Czy to oznacza, że do uruchomienia tego będzie potrzebna Java i .NET? :) Ciekawe ile pamięci to bierze :).

Ktos

@Marszal: Wyścig o najwolniejsze IDE na rynku idzie pełną parą... ;-)

GThoro

@Marszal: Pewnie tyle samo co PHPStorm i Android Studio, czyli jakieś 1GB na dzień dobry.

krzysiek050

@GThoro: Bardzo ciekawe. Moja Intelij IDEA w wersji ultimate z wieloma pluginami do frameworków na start bierze 350MB.

GThoro

@krzysiek050: No widzisz, a mój trial PHPStorm'a na start łyka 1GB. Może to taki feature triala - zniechęcić usera wysokim zużyciem pamięci :) Poza tym Android Studio też tak łyka RAM jak pelikan :/. Oba IDE oparte są IntelliJ.

msm
2015-12-03 14:27

Dobre kilka miesięcy temu opublikowaliśmy z @Revem artykuł w @Magazyn Programista opis naszego rozwiązania jednego z zadań z CONFidence CTF 2015 (w którym braliśmy udział jako p4).

Minęło wystarczająco dużo czasu, i mamy oficjalne pozwolenie na opublikowanie go - co niniejszym czynimy. Jeśli ktoś jest zainteresowany:
https://drive.google.com/file/d/0B4NPWiYAS21gel9fU0MyeVMwb3M/

(Swoją drogą, autorem zadania jest inny forumowicz, @Gynvael Coldwind)

#ctf #p4 #programista

docxxx

@MSM: Czytalem wiekszosc rozwiazan na lamach MP. Szacun. To jest wlasnie inzynieria.

Shalom

@docxxx: nie przegap kolejnego numeru bo znowu będzie mozna poczytać o poczynaniach @p4 ;)

Gynvael Coldwind

Dodam, że art z następnego numeru jest kapitalny :)

docxxx

@Gynvael Coldwind: Mam prenumeratę w robocie ;)

Hummin

@MSM: 1.Ile (+-) czasu wam zajęło rozwiązanie tego? 2.Ile czasu mieliście na rozwiązanie tego zadania?

Shalom

@Hummin: Generalnie CTFy trwają 24-48h i masz w tym czasie do rozwiązania 20-30 zadań o różnymi poziomie trudności (zwykle od 100 do 500 punktów za zadanie). To zadanie było za 300 punktów, więc można się spodziewać że zajmie nawet do kilku godzin pracy.

msm

@Hummin: Tak jak @Shalom pisze - CTF trwał z tego co pamiętam jakieś 30 godzin. Ciężko powiedzieć ile nam zajęło samo rozwiązanie zadania, bo wcześniej przez jakiś czas myśleliśmy o nim, patrzyliśmy na nie i nie wiedzieliśmy jak się zabrać za rozwiązywanie. Ale od momentu kiedy postanowiliśmy zrekonstruować oryginalny kod programu z bytecodu - myślę że jakieś 3 godziny.

Rev

@Hummin: A ja dodam, że skończyliśmy rozwiązywać to zadanie o jakiejś 5 na ranem :).

msm
2015-10-07 00:05

Udało się w końcu skompilować i wrzucić writeup z CSAW #ctf : Writeup CSAW CTF 2015

To chyba (a raczej: na pewno) największy writeup jaki kiedykowiek zrobiliśmy, więc pisanie go (i formatowanie na 4p) zajęło wieki ;). No ale przynajmniej ładnie wyglada, i w dodatku - co ciekawe - ktoś go czyta (wg. statystyk na githubie 1134 unikalnych odwiedzin i 6k odsłon).

msm
2015-03-05 00:20

Chciałem w końcu umieścić coś tutaj (na mikroblogu) - zrobić małą analizę zachowania dropboxa i wrzucić. Ale niestety - znowu planowany tekst wyszedł za duży.

Dla ciekawych, analiza tutaj - Analiza behawioralna dropboxa. Można komentować/oceniać/[nie] zgadzać się :>.