Bitové operace ve vyšších jazycích

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #135 kdy: 07. 09. 2016, 16:00:41 »
uchovávání a třídění IP adres v databázích ve formě stringů, protože dotyčným matlákům nedocvaklo, že ve skutečnosti jde o jedno 32bitové číslo.

Na tomhle není nic špatného.
??? Opravdu??? 15 bytů místo 4? Větší indexy? Pomalejší vyhledávání? Složitější dotazy? Složitější validace? A to jen proto, že někdo neumí základní bitové operace? No to snad ne...

A co když k té IP adrese ukládáš i user agenta? Potom je tvé šetření pamětí úplně zbytečné. Jako výhodu celočíselné reprezentace beru možnost selektování rozsahů.
Jasně, taky k té IP adrese můžu ukládat kilometrovej blob nějaké binární komunikace a procentuálně jsem ušetřil prd, ale ono je to trochu tady, trochu támhle... Jestli je jediným důvodem, proč ukládat adresu ve stringu to, že se odmítám naučit binární posun doleva, doprava, and a or, tak mi to přijde celkem ubohý. V tomto případě konkrétně to nemá absolutně žádnou obhajitelnou výhodu a spoustu nevýhod. Pokud bych z nějakého zvláštního důvodu opravdu potřeboval vidět adresy v databázi jako string, udělám si na to pohled a je to.
Pokud už bych IP adresy chtěl uchovávat v množství menším, než malém, pravděpodobně to bude kvůli nějakým statistikám a například vytáhnout z toho geografické údaje bude mnohonásobně efektivnější a jednodušší, než to tahat ze stringů.

Pokud se někdo bavil o IPv6, situace je obdobná, jen to uložím jako binary(16), případně jako dvě 64 bitové hodnoty.

Proč bych měl používat bitový posun? Na převody mohu použít hotové funkce. Ukládáš ip adresy jako číslo i v lozích?


Kit

Re:Bitové operace ve vyšších jazycích
« Odpověď #136 kdy: 07. 09. 2016, 16:24:10 »
A co když k té IP adrese ukládáš i user agenta? Potom je tvé šetření pamětí úplně zbytečné. Jako výhodu celočíselné reprezentace beru možnost selektování rozsahů.

Nezapomeň na 1NF.

Pokud bych z nějakého zvláštního důvodu opravdu potřeboval vidět adresy v databázi jako string, udělám si na to pohled a je to.

Lepší databáze na to mají datový typ. Taková IP je uložena binárně, ale prezentuje se textově.

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #137 kdy: 07. 09. 2016, 16:27:48 »
Nezapomeň na 1NF.

Na to kašlu. Prostě do jednoho sloupce uložím adresy tak jak je dostávám a do druhého převedené.

gl

Re:bitové operace
« Odpověď #138 kdy: 07. 09. 2016, 17:43:40 »
Pro práci s IP a RGB se používají knihovny, často implementované v C.

Tak povídej přeháněj jak třeba v Javě převedeš matici intů na matici RGB a naopak. Pro jednoduchost klidně lineární color space.

Pokud myslíš separovat jednotlivé channely tak to jde např:

Kód: [Vybrat]
from PIL import Image
img = Image.open('image.png')
r, g, b, a = img.split()
r.show() # zobrazi pouze cerveny channel
img_new = Image.merge("RGB", [r, g, b])
img_new.show() # zobrazi znovuslozeny puvodni obrazek

Obecně provádět pythonovský kód pro každý pixel není dobrý nápad.

Radovan.

Re:Bitové operace ve vyšších jazycích
« Odpověď #139 kdy: 07. 09. 2016, 19:04:18 »
A až si půjdeš vybrat/poslat peníze, tak si vzpomeň, kterým jazykem se s nimi manipuluje.
Vzpomněl jsem si na COBOL ;D


javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #140 kdy: 07. 09. 2016, 19:08:19 »
U starších bank tam ještě malé části budou, ale vše podstatné už bude v tom nejlepším ;)

Radovan.

Re:Bitové operace ve vyšších jazycích
« Odpověď #141 kdy: 07. 09. 2016, 19:19:40 »

Než budeme pokračovat, zeptám se jestli máš zkušenosti s vedením lidí, s jejich náborem, výběrem, rozvojem a případně i propouštěním.

Díky za odpověď.

Tak jistě, to má skoro každý po několika letech. Právě proto nechápu, co tak hloupou otázkou získáš? Kromě opovržení uchazeče.
Po několika letech ve zvláštní škole?

Podle toho co jsi napsal bych tě odhadl tak mezi šestnácti a osmnácti roky. Jde o mentální věk, nikoliv fyzický, ten bych podle jiných tvých výroků hádal tak do pětadvaceti při IQ 92-95. Drž se lopaty, hochu, protože ty nemáš ani na BASIC!

atarist

Re:Bitové operace ve vyšších jazycích
« Odpověď #142 kdy: 07. 09. 2016, 23:30:33 »
U starších bank tam ještě malé části budou, ale vše podstatné už bude v tom nejlepším ;)

Nejsou "starsi banky" a "nove banky", vsechny banky provadeji clearing s CBN, dalsimi bankami, operace v jinych menach apod. Tyto veci jsou skutecne v Cobolu a RPG, neni moc duvodu to menit, protoze zelezo je pronajate, plne podporovane, HW akcelerace pro vsechno podstatne dela IBM (jak jsem zminovat HW karty pro kryptovani napriklad) a vlastne do toho radeji nikdo moc nehrabe - uz vubec ne mladi nagelovani frajirci, to mi ver (ti maji v bankach uuuuplne jine role)

atarist

Re:bitové operace
« Odpověď #143 kdy: 07. 09. 2016, 23:34:43 »
Pro práci s IP a RGB se používají knihovny, často implementované v C.

Tak povídej přeháněj jak třeba v Javě převedeš matici intů na matici RGB a naopak. Pro jednoduchost klidně lineární color space.

Pokud myslíš separovat jednotlivé channely tak to jde např:

Kód: [Vybrat]
from PIL import Image
img = Image.open('image.png')
r, g, b, a = img.split()
r.show() # zobrazi pouze cerveny channel
img_new = Image.merge("RGB", [r, g, b])
img_new.show() # zobrazi znovuslozeny puvodni obrazek

Obecně provádět pythonovský kód pro každý pixel není dobrý nápad.

Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

gl

Re:bitové operace
« Odpověď #144 kdy: 08. 09. 2016, 00:35:58 »
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

balki

Re:bitové operace
« Odpověď #145 kdy: 08. 09. 2016, 01:29:44 »
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)

Ivan Nový

Re:bitové operace
« Odpověď #146 kdy: 08. 09. 2016, 04:48:08 »
Myslel jsem v Javě (tam to dost dobře nejde), ale ok, příklad beru a je napsán imho dobře - nesnažíš se vše udělat v tom jediném-správném-úplně-nejlepším-jazyce (tímto zdravím pána, který není, ale skutečně není "lopata"), ale používaš low level jazyk pro low level operace a naopak.

V původním příspěvku jsem psal, že mluvím o pythonu. Javu moc dobře neznám, ale určitě podobné knihovny existují i tam.

Od javy 1.4 je sucast java api trieda ava.awt.Color , metody getGreen, getRed , getBlue, getAlpha.
https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html

Ja by som asi radsej pouzil tie bitove posuny, ale da sa to bez posunov :)
V javě máte i operaci sčítání, přesto sčítat asi umíte, že.

PetrM

Re:Bitové operace ve vyšších jazycích
« Odpověď #147 kdy: 08. 09. 2016, 07:24:07 »
Když vezmu programátora (ne webovýho grafika), tak by měl tušit, jak ten stroj funguje (že je program v paměti, že do RAMky se leze skrz nějakou adresu, jaký je rozdíl mezi bytem a wordem).  A reprezentace čísla v různých soustavách a operace s nima jsou prostě základ.

Tak třeba já bych měl docela problém přijmout účetní, která by nezvládna u pohovoru ručně spočítat na papír:
A stojí 100Kč + DPH 22%, B stojí 2200 Kč se slevou 10% + DPH 22%,  C stojí 500 Kč + DPH 5%, kolik zaplatíš celkem?

(A kdybych musel zaměstnat motyku Javamana, tak ho posadím k 8051 a dám mu do toho v Javě naimplementovat web server- Třeba by zjistil, že v Javě opravdu nejde vše).

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Bitové operace ve vyšších jazycích
« Odpověď #148 kdy: 08. 09. 2016, 08:04:15 »
Když vezmu programátora (ne webovýho grafika), tak by měl tušit, jak ten stroj funguje (že je program v paměti, že do RAMky se leze skrz nějakou adresu, jaký je rozdíl mezi bytem a wordem).  A reprezentace čísla v různých soustavách a operace s nima jsou prostě základ.

Protoze front-end/back-end developer pracujici v JavaScriptu neni grafik, tak si stojim za svym - je mu to uplne na nic. Muze tusit, jak to funguje, ale v praci mu to nepomuze. K RAM ani adresam/ukazatelum se nedostane, to stejne byte a word. Ruzne soustavy pouzije tak maximalne kdyz se mu neco bude prevadet na cislo z retezce s jinym radixem nez 10 (omsely chytak map + parseInt). A k tomu je nepotrebuje umet ani prevadet, proste vi, ze existuji a ze tady nesedi reprezentace v retezci s parsovanym cislem.

Tak třeba já bych měl docela problém přijmout účetní, která by nezvládna u pohovoru ručně spočítat na papír:
A stojí 100Kč + DPH 22%, B stojí 2200 Kč se slevou 10% + DPH 22%,  C stojí 500 Kč + DPH 5%, kolik zaplatíš celkem?

Jenomze tohle ona i v praci pouzit muze. Navic tohle je snad spis znalost ze zakladni skoly, takze ano, taky bych problem nekoho prijmout, kdo na toto koukal jako puk. Ale pokud se nekdo sekne v binarnich vypoctech na papir, ktere nikdy v praxi nepotreboval a ani na danem miste potrebovat nebude, tak v tom nevidim zadny problem - zadne minusove body, maximalne tak na srovnani jinak "stejnych" kandidatu.

(A kdybych musel zaměstnat motyku Javamana, tak ho posadím k 8051 a dám mu do toho v Javě naimplementovat web server- Třeba by zjistil, že v Javě opravdu nejde vše).

K cemu tento dovetek jako slouzil? K tomu, abys predvedl, ze jsi selhal pri volbe vhodne technologie nebo hardware? HW je ve vetsine pripadech mnohem levnejsi nez cas programatora, proto se vetsinou take voli lepsi HW a rychlejsi vyvoj, ne naopak.

BTW placat umim taky: A ja bych te posadil ke kulickovemu pocitadlu a zadal bych ti, at naimplementujes simulaci procesoru, at zjistis, ze znalost vnitrnosti neni vsespasna.

v

Re:Bitové operace ve vyšších jazycích
« Odpověď #149 kdy: 08. 09. 2016, 08:13:35 »
Když vezmu programátora (ne webovýho grafika), tak by měl tušit, jak ten stroj funguje (že je program v paměti, že do RAMky se leze skrz nějakou adresu, jaký je rozdíl mezi bytem a wordem).  A reprezentace čísla v různých soustavách a operace s nima jsou prostě základ.

Protoze front-end/back-end developer pracujici v JavaScriptu neni grafik, tak si stojim za svym - je mu to uplne na nic. Muze tusit, jak to funguje, ale v praci mu to nepomuze. K RAM ani adresam/ukazatelum se nedostane, to stejne byte a word. Ruzne soustavy pouzije tak maximalne kdyz se mu neco bude prevadet na cislo z retezce s jinym radixem nez 10 (omsely chytak map + parseInt). A k tomu je nepotrebuje umet ani prevadet, proste vi, ze existuji a ze tady nesedi reprezentace v retezci s parsovanym cislem.
nedávno se tu někdo ptal, proč browsery žerou tolik paměti, tohle je tady asi odpověď :D base64 taky potkat nemůže? a jaké další operátory javascriptu teda znát nemusí?