Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Podsumowuj?c: moim zdaniem podej?cie z C# (extension methods) to taka uboga wersja konwersji implicit ze Scali natomiast podej?cie z Javy 8 to dodanie namiastki mixin▒w ze Scali z zachowaniem kompatybilno?ci wstecznej.
- Co s?dzicie o podej?ciach w tych j?zykach, wzgl?dnie w innych j?zykach statycznie typowanych? MSZ extension methods z C# to co najwy?ej oszcz?dzaj? kilka znak▒w przy wywo?aniu metod, jako ?e zamiast ob.extensionMethod() mo?na zrobi? ext.extensionMetdhod(ob), gdzie ext to obiekt dostarczaj?cy dodatkowych metod. Defender methods z Javy natomiast daj? mo?liwo?? bardzo ograniczonego wielodziedziczenia, co mo?e znacz?co zmniejszy? ilo?? metod do zaimplemetowania czy wydelegowania.
- Nie wiem jaka jest polityka dotycz?ca .NETa, ale w Javie autorzy skupiaj? si? na kompatybilno?ci wstecznej. Defender methods s? dlatego, ?e chc? do kolekcji doda? takie funkcje jak map(), forAll(), filter() etc nie powoduj?c b??d▒w kompliacji ju? istniej?cych wyspecjalizowanych, zewn?trznych implementacji kolekcji. W .NETu by? mo?e jest tak, ?e pod ka?dy numerek trzeba pisa? inn? wersj? bibliotek/ aplikacji - nie wiem.
- Kozio? i Kr▒lik lubi? zabawy z zaawansowanymi funkcjonalno?ciami j?zyk▒w, wi?c ich zdanie by mnie ciekawi?o. Deus pewnie pokaza? by, ?e w Haskellu mo?na to wszystko zaimplementowa? 30 x szybciej, ale niestety si? ju? nie pojawia.
- from_unixtime(post_time): 2011-08-06 00:08:54
- *************************** 36. row ***************************
- post_id: 767018
- text_content: Kumpel ma problem jak w tytule. System to, ZTCP, WinXP. Pod Mozill? i Explorerem jest OK. Kto? mia? podobny problem?
- from_unixtime(post_time): 2011-08-09 14:52:50
- *************************** 37. row ***************************
- post_id: 767094
- text_content: We wczesnych inkarnacjach Java u?ywa?a zielonych w?tk▒w i wydajno?? ich by?a nawet sporo lepsza od natywnych w?tk▒w, per: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.8.9238&rep=rep1&type=pdf Obecnie desktopowe JVMy nie wspieraj? ju? zielonych w?tk▒w, mo?na je sobie co najwy?ej emulowa?.
- Zielonych w?tk▒w nie u?ywa si?, podaj?c nast?puj?ce argumenty:
- - ograniczone s? do jednego rdzenia,
- - blokada I/O blokuje ca?? maszyn? wirtualn?.
- Mo?na to jednak obej??. Mo?na u?ywa? asynchronicznego I/O, co wyeliminuje drugi problem. Problem pierwszy mo?e by? zaradzony (wtf, nie ma takiego s?owa?) poprzez odpalenie tylu natywnych w?tk▒w ile jest rdzeni, a potem mo?na tworzy? zielone w?tki i przerzuca? je na tych kilku natywnych w?tkach.
- Z tego co na szybko wyczyta?em na necie to GHC u?ywa zielonych w?tk▒w wraz z "trikami", kt▒re opisa?em powy?ej.
- Zielone w?tki pozwalaj? uniezale?ni? si? od przerwa?, tzn prze??czanie w?tk▒w czy proces▒w mo?na robi? ca?kowicie software'owo. Interesuje mnie to, bo planuj? napisa? kiedy? w?asn? maszyn? wirtualn? :)
- Kto? wie czy s? jakie? (w miar?) nowe maszyny wirtualne wielow?tkowe z zielonymi w?tkami i jak stoi ich skalowalno???
- from_unixtime(post_time): 2011-08-09 20:37:50
- *************************** 38. row ***************************
- post_id: 768333
- text_content: Chc? zbudowa? iterator do generowania dw▒ch (bardzo zbli?onych) typ▒w niesko?czonych ci?g▒w. Nazwijmy je "dw▒jkowy" i "tr▒jkowy".
- Dw▒jkowy ma posta?:
- aabaabcaabaabcdaabaabcaabaabcde....
- Tr▒jkowy ma posta?:
- aaabaaabaaabcaaabaaabaaabcaaabaaabaaabcd...
- Dw▒jkowy mo?na zbudowa? tak:
- 1. Startujemy od ci?gu z?o?onego z jednej litery
- 2. W ka?dej kolejnej iteracji, ??czymy ci?g ze swoj? kopi?, a na koniec dodajemy najmniejsz?, nie u?yt? jeszcze liter?.
- Kolejne kroki konstrukcji wygl?daj? wi?c tak:
- 1. a
- 2. aab
- 3. aabaabc
- 4. aabaabcaabaabcd
- itd
- Tr▒jkowy mo?na zbudowa? analogicznie, tylko w punkcie drugim, zamiast ??czenia z jedn? dodatkow? kopi?, ??czymy z dwiema dodatkowymi kopiami.
- Zamiast sklejania ci?g▒w chc? mie? jednak iterator do generowania ci?g▒w. Po wygenerowaniu n-tego znaku iterator powinien zawiera? w sobie stan o rozmiarze O(lg n) (wzgl?dnie O(lg^2 n) je?eli zak?adamy zmienn? d?ugo?? typ▒w danych, np BigInteger, ale za?▒?my, dla prostoty, ?e nie wygenerujemy nigdy wi?cej jak np 2^60 znak▒w). Wygenerowanie jednego znaku (w dowolnym stanie iteratora) powinno mie? z?o?ono?? zamortyzowan? O(1).
- Ma kto? pomys?? :D
- from_unixtime(post_time): 2011-08-16 12:41:59
- *************************** 39. row ***************************
- post_id: 769115
- text_content: Siedz? sobie na Ubuntu 11.04 i Banshee wy??cza si? co kilka - kilkana?cie piosenek i nawet nie pierdolnie komunikatu o b??dzie. (Mo?e dlatego, ?e lata na niedorobionym Mono?)
- Jakie s? wasze do?wiadczenia z Ubu (oczywi?cie pomijaj?c stery od grafy)? Jak dla mnie to stabilno?? 11.04 jest w miar? OK, czasem nie wy??czam kompa przez gdzie? 10 dni, albo i wi?cej i chodzi w miar?. Windowsa 7 ci??ko tak przetestowa?, chyba ?e si? wy??czy automatycznie resetuj?ce kompa aktualizacje :P
- from_unixtime(post_time): 2011-08-20 17:44:10
- *************************** 40. row ***************************
- post_id: 770108
- text_content: Tworz? wsp▒?bie?ny algorytm sortowania blokowego, tzn co? w stylu algorytmu stosowanego w bzip2. Przy sortowaniu blokowym (block-sorting) mo?na wyindukowa? posortowany porz?dek pewnych podci?g▒w z posortowanego porz?dku innych podci?g▒w, korzystaj?c z faktu, ?e sortowanie blokowe sortuje podci?gi tego samego ci?gu bazowego.
- W moim programie u?ywam Copy Transform, wymy?lonego przez Juliana Sewarda, autora bzip2. Opisz? jak dzia?a ten algorytm w przypadku sufiks▒w, najpierw troch? obja?ni? spos▒b zapisu:
- B_a to du?y kube?ek, zawieraj?cy wszystkie sufiksy zaczynaj?ce si? na liter? a,
- b_ab to ma?y kube?ek, zawieraj?cy wszystkie sufiksy zaczynaj?ce si? od liter "ab"
- Du?y kube?ek B_a sk?ada si? z kube?k▒w {b_aa, b_ab, ..., b_az}
- Maj?c posortowany kube?ek B_d mog? z niego wyindukowa? posortowany porz?dek kube?k▒w {b_ad, b_bd, b_cd, b_ed, ..., b_zd} w zaledwie jednym przej?ciu po tym du?ym kube?ku. Tak jest w oryginalnym Copy Transform. P▒?niej Seward zorientowa? si?, ?e kube?ek b_dd mo?na wyindukowa? z kube?k▒w {b_da, b_db, b_dc, d_de, ..., d_dz} (co widocznie przyspieszy?o jego bzipa na niekt▒rych danych wej?ciowych).
- Moim problemem jest obliczenie optymalnej sekwencji indukowania kube?k▒w, tzn kube?ki maj? r▒?ne rozmiary, a ja chc? zminimalizowa? ??czny rozmiar kube?k▒w, kt▒re musz? posortowa? za pomoc? por▒wna?, aby wyindukowa? reszt?.
- Aktualnie wydajno?? wygl?da tak:
- <code> Copy ascending Copy simple-ratio Improved two-stage
- chr22.dna 35.56 31.67 26.68
- etext99 49.75 38.64 31.10
- gcc-3.0.tar 42.63 33.46 26.77
- howto 45.51 36.13 28.55
- jdk13c 47.63 35.05 30.06
- linux-2.4.5.tar 44.12 35.20 26.80
- rctail96 49.00 36.57 30.28
- rfc 40.17 32.28 25.83
- sprot34.dat 43.14 38.07 29.26
- w3c2 47.46 36.22 29.90
- mean 44.50 35.33 28.52</code>
- Gdzie:
- - Copy ascending, to normalna wersja Copy Transform, gdzie sortuje si? kube?ki od najmniejszego do najwi?kszego,
- - Copy simple-ratio, to Copy Transform z moj? heurez? do obliczania sekwencji indukowania,
- - Improved two-stage to inny algorytm indukowania posortowanego porz?dku, ale nie ma pomys?u jak by go sensownie zr▒wnolegli?,
- Liczby oznaczaj? procent sufiks▒w, kt▒re trzeba posortowa?, aby m▒c wyindukowa? reszt?. Jak wida? moja heureza znacznie poprawia efektywno?? Copy Transform, ale i tak daleko jej do ITS. (Nota bene: ITS jest opisany w dokumencie: http://homepage3.nifty.com/wpage/software/itssort.txt ).
- Ma kto? pomys? czego u?y?, aby uzyska? optymaln? sekwencj? indukowania?
- from_unixtime(post_time): 2011-08-24 14:19:25
- *************************** 41. row ***************************
- post_id: 770302
- text_content: Ostatnio si? zastanawia?em, co by tu zrobi?, ?eby nie trzeba by?o wymy?la? nowego has?a dla ka?dego serwisu. Albo inaczej - skoro ma?o kto wymy?la i zapami?tuje pierdylion hase? do pierdyliona serwis▒w - aby nie trzeba by?o si? nara?a?, ?e has?o gdzie? wycieknie.
- Mo?na niby logowa? si? za pomoc? OpenID, OpenBleble, Facebooka, Gmaila, czy te? innych popierd▒?ek. Jest jednak sporo ludzi, kt▒rzy nie korzystaj? z takich serwis▒w albo maj? np w robocie odci?te. Za to konto e-mail ma raczej ka?dy i chcia?bym wymy?li? co?, co wymaga tylko mejla.
- Przyk?adowy schemat m▒g?by wygl?da? tak:
- - wchodz? na stron? z logowaniem, wpisuj? sw▒j adres email i klikam loguj (+ ewentualnie zapami?taj/ nie wylogowuj),
- - serwis wysy?a maila z kodem uwierzytelniaj?cym/ linkiem do logowania na mejla,
- - klikam na tego linka albo wpisuj? kod uwierzytelniaj?cy na stronie,
- Teraz kwestie bezpiecze?stwa:
- - po??czenie z serwisem oczywi?cie po HTTPS z jakim? sensownym szyfrowaniem,
- - aby zapobiec phishingowi, mejle nie powinny zawiera? ?adnych link▒w, w takim razie wysy?any by?by tylko i wy??cznie kod uwierzytelniaj?cy,
- Mam pytanie co do samego bezpiecze?stwa mejli: czy da si? przechwyci? mejle? Istnieje odpowiednik HTTPSa dla mejli, tak aby mo?na by?o korzysta? z podpisanych certyfikat▒w i odrzuca? po??czenia z niepodpisanymi certyfikatami?
- Je?eli da si? przechwyci? mejla to obecne systemy logowania te? zawodz?, a to za spraw? funkcjonalno?ci pt przypominanie/ resetowanie has?a poprzez wysy?anie mejla z linkiem czy kodem. Zak?adaj?c, ?e kto? podgl?da mejle, to mo?e taki link czy kod wykorzysta? tu? po jego wykryciu, zanim u?ytkownik z niego skorzysta.
- from_unixtime(post_time): 2011-08-25 10:34:52
- *************************** 42. row ***************************
- post_id: 774863
- text_content: Jak to z tym jest? Na pewno prawo si? w k▒?ko zmienia.
- Promotor podes?a? mi linka: http://www.rp.pl/artykul/697407.html
- W zasadzie wsz?dzie pisze si? o pracy magisterskiej, natomiast ja do pracy do??czam jeszcze program (kody ?r▒d?owe + mo?e kod wykonywalny). Chcia?bym np w przysz?o?ci zarabia? na tym programie (je?li si? uda) nie p?ac?c jakich? tantiem dla UJ.
- A mo?e w og▒le kodu ?r▒d?owego nie do??cza?, tylko sam pseudokod? Jak to widzicie?
- from_unixtime(post_time): 2011-09-14 11:59:42
- *************************** 43. row ***************************
- post_id: 779204
- text_content: Niech R b?dzie relacj? symetryczn? i przechodni? na zbiorze X. Przeprowadzamy nast?puj?ce rozumowanie. Niech xRy. Poniewa? R jest symetryczna, wi?c yRx. Zatem na mocy przechodnio?ci R z warunk▒w xRy i yRx wynika xRx, czyli R jest zwrotna bo x by?o dowolne. Gdzie jest b??d w tym rozumowaniu?
- Jacek Gancarzewicz, Algebra liniowa i jej zastosowania, WUJ, Wydanie I, 2004, strona 59, zadanie I.12.
- Powtarzam sobie algebr? i natrafi?em w?a?nie na zadanie, kt▒rego nie mog? rozgry??.
- from_unixtime(post_time): 2011-10-03 16:13:03
- *************************** 44. row ***************************
- post_id: 779555
- text_content: <nudny-bezsensowny-wst?p>
- Ostatnio my?l? o wyje?dzie za granic? w poszukiwaniu pracy odpowiadaj?cej moim umiej?tno?ciom.
- Oferty pracy w Polsce z mojej brochy to generalnie praca na platformie Java, tyle ?e polska specjalno?? to stronienie od ambitnych podej?? do problemu oraz beznadziejna rekrutacja, przynajmniej patrz?c po ofertach pracy. Przez to nie wykorzystuje si? potencja?u programist▒w. Typowa polska oferta pracy nie zawiera wide?ek p?acowych, a je?li zawiera to co? w stylu 10 PLN - 100k PLN, czyli to ?miech w ?ywe oczy. Ponadto typowe pieprzenie o m?odym, dynamicznym zespole, super g?stej atmosferze, darmowych schabowych, s?u?bowych kondomach itp W wymaganiach zwykle 10 framework▒w i 5 lat do?wiadczenia w ka?dym z nich, po czym i tak si? oka?e, ?e pewnie wykorzystywa? si? b?dzie ze dwa i to w mocno szablonowy (nie wymagaj?cy polotu) spos▒b.
- Z drugiej strony oferty na Zachodzie s? takie jak by? powinny. Dla przyk?adu: http://www.nicollcurtin.com/jobs/1993/JavaScala-Developer--Investment-Banking/ albo generalnie chyba wi?kszo?? z dowolnej por▒wnywarki, np: http://www.indeed.co.uk/jobs?q=scala+developer&l= Nie ma pieprzenia o atmosferze, poniewa? kiepska atmosfera czy og▒lnie g▒wniane podej?cie do prowadzenia firmy oznacza?oby jej kl?sk?, wi?c nie ma sensu opisywa? oczywistych rzeczy. Z drugiej strony podane s? do?? precyzyjnie wide?ki p?acowe oraz opis obowi?zk▒w. Nie ma w wymaganiach listy framework▒w, bo i tak w miar? potrzeby mo?na si? ich nauczy?.
- </nudny-bezsensowny-wst?p>
- Problemem jest dla mnie bariera j?zykowa, czyli przede wszystkim angielski m▒wiony (i oczywi?cie rozumiany ze s?uchu). O ile robot? na zmywaku mo?na dosta? bez jakiejkolwiek znajomo?ci j?zyka, to jednak do firm programistycznych na Zachodzie nie przyjmuj? ludzi z ulicy.
- W Google ludzie odpadaj? w procesie rekrutacyjnym je?li nie znaj? dobrze angielskiego, a w docelowym miejscu pracy angielski jest podstawowym j?zykiem komunikacyjnym. Nawet je?eli kandydat ma super wiedz?, zar▒wno teoretyczn?, jak i praktyczn?.
- Interesuje mnie opinia ludzi, kt▒rzy pracuj?/ pracowali na Zachodzie. Jak dobrze trzeba zna? angielski, aby mie? otwart? drog? do dowolnej posady jako programista (zak?adaj?c oczywi?cie, ?e tylko j?zyk jest potencjalnym problemem)?
- Obecnie np. ze s?uchu do?? kiepsko rozumiem, filmy/ seriale ogl?dam co najmniej z angielskimi napisami. Jako ?e certyfikaty czy poziomy mi niewiele m▒wi?, bardziej zale?a?oby mi na metryce typu stopie? zrozumienia angielskich/ ameryka?skich film▒w, audycji, konferencji, itp
- O, i jeszcze jedna sprawa w?a?nie wysz?a: jak du?a jest r▒?nica mi?dzy angielskim, a ameryka?skim akcentem? Czy je?li np dobrze rozumia?bym ameryka?skie filmy ze s?uchu to bez problemu dogada?bym si? z Angolem?
- from_unixtime(post_time): 2011-10-04 21:16:27
- *************************** 45. row ***************************
- post_id: 782651
- text_content: Chcia?bym popr▒bowa? swoich si? w budowaniu mikroprocesor▒w. Na studiach mia?em jeden semestr z OAK (czyli Organizacja i Architektura Komputer▒w), ale materia? by? kr▒tki i nie omawiano w nim ?adnych nowo?ci.
- Znacie polecacie jakie? og▒lnodost?pne materia?y, najlepiej aby by?y przyk?ady w np Verilogu czy VHDL, omawiaj?ce nie tylko sam j?zyk, ale te? ca?e (mikro)architektury, r▒?nice w metodologiach, etc Nawet troch? "beletrystyki" by si? przyda?o.
- Jak wygl?da nauczanie projektowania mikroprocesor▒w na uczelniach technicznych? Na WMiI UJ nie ma praktycznie nic, mo?e na jakim? wydziale AGH-u co? by by?o? Interesuje mnie opinia kogo?, kto si? tego uczy? albo si? tym zajmuje.
- Jak to wszystko wygl?da w polskich realiach? Wiadomo, w Ameryce, Japonii, Chinach, etc s? firmy, kt▒re produkuj? i projektuj? scalaki, ale w Polsce to co? s?abo, bo ja przynajmniej nie znam jakich? konkretnych polskich firm projektuj?cych scalaki cyfrowe.
- from_unixtime(post_time): 2011-10-17 16:33:53
- *************************** 46. row ***************************
- post_id: 788055
- text_content: Niekt▒rzy tutaj argumentowali, ?e Palikot wprowadzi model biznesowy rz?dzenia (pomijaj?c jednocze?nie sam fakt, ?e ?adna firma nie zwi?zana z rz?dem nie jest demokratyczna), usprawni to i tamto, etc
- Czy mo?na jednak liczy? na Palikota? Jest to cz?owiek, kt▒ry zmienia pogl?dy jak r?kawiczki i uwielbia by? w centrum zainteresowania. Od stycznia 2011 motorem partii Palikota jest chyba Tymochowicz, a nie sam Palikot. A kim jest Tymochowicz? Na stronie http://wiadomosci.wp.pl/kat,29674,wid,8235199,wiadomosc.html?ticaid=1d532 jest wywiad z nim, a w ?rodku np takie stwierdzenie: <quote> ?yciowe motto: nie mie? sta?ego motta - bo zmienno?? to kreatywno??, a sta?o?? ▒ t?pota</quote>Tymochowicz nie ma ?adnej ideologii, to chyba "dobrze" jak na speca od manipulacji lud?mi.
- Przejd?my jednak do samego Palikota.
- Mo?na o nim przeczyta? np takie wypowiedzi:
- <quote>najpierw by? wielkim katolikiem wydaj?cym katolickie pismo Ozon, zaanga?owa? si? w akcj? ▒Zakaz peda?owania▒ przeciw homosiom, syna chwali? i og?asza? wszem i wobec jaki z niego dumny, ?e odm▒wi? palenia mary?ki, kt▒r? zaproponowali mu koledzy, a teraz? zmiana ?wiatopogl?du o 180 stopni w ci?gu roku z hakiem i to w wieku 50 lat, teraz jeste?my ateist? i zagorza?ym przeciwnikiem Ko?cio?a, uwa?amy, ?e ▒it▒s ok to be gay▒ i zwi?zki partnerskie plus adopcje ▒ czemu nie, a zio?o to wspania?a forma wypoczynku i trzeba j? sadzi? na ka?dym skwerku. Dziwne, ?e facet akurat przez kampani? zmieni? pogl?dy na te najbardziej dzi? modne i zagwarantowane poparciem i poklaskiem zbuntowanej, nie?yciowej zreszt?, m?odzie?y▒</quote><quote>palikot nigdy nie pok?▒ci? si? z PO tak jak wam si? wmawia, to jest jedna klika znaj?ca si? od lat i pij?ca t? sam? butelk? w▒dki, palikot zna polityk? od kuchni i jest zbyt inteligentny, by ▒da? si? oszuka?▒ tuskowi, jak to t?umaczy. jako? gdy PO niby ▒odrzuca?a▒ projekty jego Przyjaznego Pa?stwa, nawet raz nie oprotestowa? tego w mediach, a w kampanii wielce czyni? wyrzuty tuskowi, gdy oskar?ano go o lenistwo i brak inicjatywy jako szefa tej komisji.</quote><quote>"Janusz Palikot nie ma ?adnych pogl?d▒w politycznych. Znam go od 20 lat i to wiem. Odnalaz?by si? w ka?dej partii w zale?no?ci od potrzeby. On prowadzi polityk? nowego typu, tak?, kt▒rej kierunki wyznaczaj? oczekiwania wyborc▒w i sonda?e. By? ju? ateist?, cz?owiekiem zwi?zanym z Ko?cio?em, inne pogl?dy te? ma ca?kowicie elastyczne." To powiedzia?a jego by?a ?ona.</quote>
- Palikot nieustannie kombinuje jak by tu wyprowadzi? pieni?dze z Polski. Albo jak zrobi? jaki? przekr?t, np ten o domniemanym kupieniu Polmosu za pieni?dze samego Polmosu, dzi?ki skomplikowanym machinacjom finansowym. Ponadto jego by?a ?ona s?dzi si? z nim o podzia? maj?tku:
- http://www.se.pl/wydarzenia/kraj/byla-zona-janusza-palikota-maria-nowinska-palikot_133155.html
- http://www.se.pl/wydarzenia/kraj/maria-nowinska-wreszcie-wzieli-sie-za-palikota_195704.html
- http://www.dziennikwschodni.pl/apps/pbcs.dll/article?AID=/20080109/LUBLIN/128471023
- http://iskry.pl/index.php?option=com_content&task=view&id=5153&Itemid=3
- Nie ma w tym po?cie niestety jakich? mocnych ?r▒de? (Palikot nie jest w ciemi? bity i skutecznie ukrywa prawd? o sobie), ale mo?na odnie?? wra?enie, ?e Palikot ju? nied?ugo pogubi si? w tym co m▒wi. Jak na razie ?yje nienawi?ci? do Kaczora, ciekawe o czym b?dzie rozmawia?, gdy Kaczor zejdzie na dalszy plan na scenie politycznej? Ach, no dobra, zapomnia?em przecie?, b?dzie kierowa? si? tym co jest modne!
- from_unixtime(post_time): 2011-11-05 01:39:50
- *************************** 47. row ***************************
- post_id: 788171
- text_content: Jak w temacie. Przyda?oby si?. Nerdowskie spojrzenie na polityk?.
- from_unixtime(post_time): 2011-11-05 15:42:34
- *************************** 48. row ***************************
- post_id: 788312
- text_content: Sytuacja ekonomiczna w Szwecji:
- http://liberalis.pl/2007/03/11/artur-stepkowski-szwecja-%E2%80%93-cud-socjalizmu-czy-rownia-pochyla/
- http://www.wprost.pl/ar/47151/Pieklo-w-raju/?I=1079
- Absurdy poprawno?ci politycznej (tl;dr):
- http://wyborcza.pl/1,97738,6096200,Rzecznik_obrazonych___szwedzki_eksperyment.html
- http://natablicy.pl/zakaz-rozrozniania-plci-w-szwedzkim-przedszkolu,artykul.html?material_id=4e097b1e16f1da4841010000
- Mutli kulti kaput (tl;dr):
- http://www.wykop.pl/ramka/4475/szwecja-mroczna-strona-raju/
- from_unixtime(post_time): 2011-11-05 23:45:17
- *************************** 49. row ***************************
- post_id: 788882
- text_content: Dieta polegaj?ca na wyeliminowaniu pszenicy i wielu innych ziaren i ograniczeniu cukr▒w.
- http://www.wheatbellyblog.com/
- http://nowadebata.pl/2011/10/13/buszujacy-w-pszenicy/
- http://www.proteinpower.com/drmike/saturated-fat/wheat-belly/
- from_unixtime(post_time): 2011-11-08 02:51:07
- *************************** 50. row ***************************
- post_id: 794803
- text_content: Dost?p do Internetu mam teraz poprzez wymieniony w temacie router - dok?adnie to poprzez Wi-Fi, ale to raczej nie robi r▒?nicy przez co. Problemem jest to, ?e je?eli np w??cz? ?adowanie filmu na YouTube to dop▒ki si? film nie za?aduje to ??cze jest praktycznie ca?kowicie wysycone przez ten strumie? i je?eli chc? przegl?da? w tym czasie inne strony to zwykle dostaj? przekroczenie czasu po??czenia (tzn nic si? nie pokazuje). Inni korzystaj?cy z tego ??cza co ja (chyba Orange Freedom) te? maj? totalnie zamulonego neta w czasie gdy ?aduje mi si? film na YouTube.
- Jak skonfigurowa? router tak, aby d?ugie wysycaj?ce transfery nie blokowa?y zupe?nie innych transfer▒w?
- from_unixtime(post_time): 2011-11-28 00:12:57
- *************************** 51. row ***************************
- post_id: 795896
- text_content: Cz??? ludzi, w tym ja, przewidywa?o kryzys od dawna. Niekt▒rzy mieli w?asne analizy, inni (jak ja) powtarzali to co m▒wi?y te analizy. Rz?dy prawie wszystkich kraj▒w nale??cych do UE jednak nie dopuszczaj? my?li o rozpadzie strefy euro (Brytyjczycy oficjalnie dopuszczaj?, ale oni maj? w?asnego funta i do?? siln? gospodark?). Unijna propaganda m▒wi o ?wietnych zabezpieczeniach przed kryzysem i jak wida? mot?och ulega tej propagandzie.
- Jakie jest wasze zdanie o tym?
- from_unixtime(post_time): 2011-12-01 18:40:47
- *************************** 52. row ***************************
- post_id: 799352
- text_content: Poczyta?em artyku? Marka Nelsona o algorytmie Ukkonena budowania drzew sufiksowych: http://marknelson.us/1996/08/01/suffix-trees/
- Nelson u?ywa jednego inta na w?ze? plus 4 inty na kraw?d?. Kraw?dzi jest mniej wi?cej tyle samo co w?z?▒w, dok?adniej to ka?dy w?ze? opr▒cz korzenia ma swoj? w?asn? kraw?d? wchodz?c?, wi?c w?z?▒w jest o jeden wi?cej ni? kraw?dzi. Mo?na wi?c przyj??, ?e u Nelsona mamy 5 intow = 20 bajt▒w na w?ze?. Po dodaniu indeksu rodzica (potrzebne chyba do implementacji przesuwnego drzewa sufiksowego: http://larsson.dogma.net/research.html kt▒re chcia?bym p▒?niej zaimplementowa?) wychodzi 6 int▒w czyli 24 bajty na w?ze?.
- Mam pomys?, nieco trikowy, jak by zmniejszy? lekko to zapotrzebowanie.
- Format w?z?a by?by taki (reprezentacja drzewa typu left child - right sibling):
- 4 bajty - indeks nast?pnego (w kolejno?ci u?ycia) brata
- 4 bajty - indeks pierwszego syna
- 4 bajty - indeks rodzica (to oczywi?cie brakuje u Nelsona i u niego te? trzeba doda?)
- 4 bajty - indeks w?z?a z sufiksem
- 4 bajty - indeks pierwszego znaku z kraw?dzi wchodz?cej
- Jak obliczy? indeks ostatniego znaku z kraw?dzi wchodz?cej?
- 1. Je?eli jeste?my w li?ciu (tzn nie ma syn▒w) to z w?asno?ci algorytmu Ukkonena kraw?d? rozci?ga si? do ostatniego znaku z ci?gu wej?ciowego.
- 2. Je?eli jeste?my w w??le wewn?trznym to sprawa si? komplikuje. Co mo?emy zrobi?? Po pierwsze wska?nik na syna powinien wskazywa? na syna kt▒ry by? ostatnio dopasowany. Po drugie przy ka?dorazowym przej?ciu po danej kraw?dzi uaktualniamy jej zakres znak▒w na ten ostatnio odwiedzony (tzn je?eli w ci?gu wej?ciowym podci?g SS pojawia si? wiele razy, to w w??le pami?tamy pocz?tek ostatniego takiego wyst?pienia). Gdy to spe?nimy to indeks pierwszego znaku z kraw?dzi wchodz?cej pierwszego syna b?dzie wyst?powa? natychmiast po ostatnim znaku kraw?dzi wchodz?cej aktualnego w?z?a.
- 3. W trakcie dzia?ania algorytmu Ukkonena czasem przechodzimy do w?z?a z sufiksem. W takim przypadku, je?eli ten sufiks jest pierwszym dzieckiem (swojego rodzica) to musimy zaktualizowa? indeks kraw?dzi w tym rodzicu. Podobnie, je?eli ▒w rodzic jest pierwszym dzieckiem, to odpalamy t? procedur? rekurencyjnie. Ta rekurencja mo?e popsu? z?o?ono?? liniow?, nie zastanawia?em si? jeszcze nad tym mocno. Ka?dy wewn?trzny w?ze? ma co najmniej dw▒ch syn▒w. Mo?na oczekiwa?, ?e po przej?ciu do sufiksa, ten sufiks nie b?dzie pierwszym synem z co najmniej sta?ym prawdopodobie?stwem. Wtedy ilo?? uaktualnianych przodk▒w tak?e by?aby sta?a, a wi?c z?o?ono?? by?aby zachowana.
- Co my?licie o takiej reprezentacji? Widzicie jakie? kolejne problemy z ni? zwi?zane? A mo?e znacie jakie? lepsze, tzn bardziej zwi?z?e, ale r▒wnie szybkie, albo prostsze, ale r▒wnie zwi?z?e i szybkie?
- Posta wys?a?em r▒wnie? w wersji angielskiej na: http://encode.ru/threads/1429-Suffix-Tree-s-internal-representation . Nieco inaczej tam temat opisa?em, jak kto? chce to mo?e por▒wna?.
- from_unixtime(post_time): 2011-12-11 00:47:18
- *************************** 53. row ***************************
- post_id: 801931
- text_content: Prosz? o teorie spiskowe :)
- from_unixtime(post_time): 2011-12-19 17:04:48
- *************************** 54. row ***************************
- post_id: 806984
- text_content: Na forum jest przede wszystkim miljon temat▒w typu: Jak zacz??? Jaki j?zyk programowania wybra?? Jak? szko?? wybra?? Jakie frameworki wybra?? Wyszuanie ich jest banalne, ale nie trywialne. Dlatego mn▒stwo user▒w zak?ada nowe.
- Polecam wi?c stworzy? dzia? Co wybra?? z poddzia?ami typu J?zyk programowania, Szko?a, Framework, Jak zacz??. W ka?dym mo?na przyklei? specjalne tematy np opisuj?ce wybrane j?zyki, frameworki, szko?y, etc, tematy por▒wnuj?ce, listuj?ce, etc
- from_unixtime(post_time): 2012-01-06 17:35:16
- *************************** 55. row ***************************
- post_id: 807005
- text_content: Ubunciak mi si? ostatnio nieco rozlecia? i siedz? na W7 teraz. Nie bootuje si?, nawet tryb recovery nie ?aduje si?, pojawia si? tylko BusyBox, kt▒ry jest strasznie okrojony i nawet fsck tam chyba nie ma. Jak sobie poradzi? bez LiveCD/ LivePendrive (bo pendrive'a chwilowo nie mam, a nap?du optycznego w netbooku nie mam)?
- from_unixtime(post_time): 2012-01-06 18:35:59
- *************************** 56. row ***************************
- post_id: 810555
- text_content: 1. Mam (tzn zarz?dzam baz?) dw▒ch u?ytkownik▒w w bazie Oracle (chyba 11gR2). Jeden, nazwijmy go ROOT ma wszelakie prawa, a drugi USER ma tylko te, kt▒re s? mu niezb?dne (tzn USER jest jak?? tam aplikacj?). Chc?, ?eby USER m▒g? si? odwo?ywa? do tabel ROOTa tak jak do swoich, tzn bez prefiksu "ROOT." M▒g?bym r?cznie wyklika? kilkaset synonim▒w w SQLDeveloperze, ale to by by?o chore. Ma kto? pomys? jak to zrobi??
- 2. Czy SQLDeveloper pozwala odpala? PL/SQL z palca?
- 3. Moim aktualnym pomys?em jest co? w rodzaju:
- <code>
- for table_name in (select table_name from user_tables) loop
- create synonym USER.table_name (tu nie wiem jak zrobi?, ?eby potraktowa? to jako zmienn?, a nie litera?) for table_name (tu tak samo);
- end loop;
- </code>
- Ale takie co? nijak mi nie chce dzia?a?.
- from_unixtime(post_time): 2012-01-17 10:06:26
- *************************** 57. row ***************************
- post_id: 812983
- text_content: Jak w temacie. Denerwuj? mnie czasem stopki. Niech?e to si? jako? chowa.
- from_unixtime(post_time): 2012-01-24 14:16:06
- *************************** 58. row ***************************
- post_id: 815553
- text_content: 1. Mam LG W2252TQ-PF. Chcia?bym go skalibrowa?, a nie mam kalibratora. Czym to zrobi?, tzn kt▒rym programem?
- 2. W kt▒rych miejscach w Ubuntu i Windowsie 7 jest konfiguracja kolor▒w/ kontrastu/ itp? Mam wra?enie, ?e w wielu miejscach i ?e te korekcje si? nawzajem nak?adaj?, przez co jest to trudne do ogarni?cia. Mam kart? grafiki Radeon ze ?wie?ymi sterami.
- 3. Zale?a?oby mi na tym, ?eby po kalibracji obraz wygl?da? tak samo na Ubuntu jak i na Windows 7.
- Jakie? pomys?y?
- from_unixtime(post_time): 2012-02-01 22:31:43
- *************************** 59. row ***************************
- post_id: 818400
- text_content: W?tek mierz?cy ob?ud? pluj?cych jadem ateist▒w.
- Ponadto:
- <quote=Wikipedia>Apostazja nie powoduje formalnego opuszczenia Ko?cio?a. Apostata zgodnie z doktryn? Ko?cio?a Katolickiego wci?? pozostaje jego cz?onkiem oraz katolikiem, gdy? decyduj?cy o tym chrzest jest nieusuwalny w my?l zasady ▒Semel catholicus, semper catholicus▒ (▒Raz katolik, zawsze katolik▒). Apostazja odnotowywana jest w ksi?gach parafialnych, jednak informacja o chrzcie nie jest z nich usuwana.</quote>
- Formalnie nale?enie do KK oznacza tylko fakt wcze?niejszego chrztu i nic wi?cej. Nie ma ?adnego zwi?zku ze stanem umys?owym danego cz?owieka. O sta?ych antychrze?cija?skich pogl?dach ?wiadczy? mo?e natomiast brak chrztu u doros?ego cz?owieka.
- from_unixtime(post_time): 2012-02-11 18:25:39
- *************************** 60. row ***************************
- post_id: 820071
- text_content: Czy komu? to dzia?a? www youtube com/comment_search?username=cokolwiek zawsze daje komunikat, ?e nic nie znaleziono.
- from_unixtime(post_time): 2012-02-16 21:43:46
- *************************** 61. row ***************************
- post_id: 823967
- text_content: Czy da si? np odpali? naraz kilka Hibernat▒w (np w r▒?nych wersjach) na jednej bazie? Tzn dok?adnie: czy nie b?d? si? przez to wypieprza? lub ?le dzia?a??
- from_unixtime(post_time): 2012-03-01 11:15:43
- *************************** 62. row ***************************
- post_id: 824210
- text_content: Nie przewidzia?em jednak, ?e pojawi si? inicjatywa od naukowc▒w (a mo?e to pseudo-naukowcy?):
- http://wiadomosci.gazeta.pl/wiadomosci/1,114881,11268597,Aborcja_po_urodzeniu___szokujacy_pomysl_naukowcow.html
- from_unixtime(post_time): 2012-03-01 22:56:27
- *************************** 63. row ***************************
- post_id: 824787
- text_content: OpenStreetMap jest na licencji CC-BY-SA 2.0 http://creativecommons.org/licenses/by-sa/2.0/
- Czy mo?na np ?ci?gn?? dane z OSM na serwer, a potem stworzy? program (np aplikacj? webow?) kt▒ry je wykorzystuje, jest p?atny i zamkni?ty i zarabia? na nim?
- Z tego co zrozumia?em z licencji to na pewno je?eli dokona si? zmian w samej mapie to trzeba te zmiany opublikowa?. Natomiast nie jestem pewien w?a?nie co do u?ytku tych danych w programie komercyjnym oraz, co si? z tym wi??e, przetwarzania tych danych w r▒?noraki spos▒b i tworzenie zamkni?tych i w?asno?ciowych program▒w przetwarzaj?cych.
- from_unixtime(post_time): 2012-03-03 20:45:44
- *************************** 64. row ***************************
- post_id: 832051
- text_content: Mam projekt w Mavenie. Generalna struktura jest taka:
- - common,
- - javame, kt▒ry korzysta z common,
- - android-parent, kt▒ry korzysta z common,
- - android/android, kt▒ry dziedziczy z android-parent,
- - android/android-it (instrumentation tests), kt▒ry dziedziczy z android-parent,
- Problem jest taki, ?e Eclipse nie widzi mi w module android-it klas z modu?u android. A dok?adniej to w HelloAndroidActivityTest nie widzi mi klasy HelloAndroidActivity. Ma kto? pomys? jak to rozwi?za?? Za??czam spakowany projekt z wyci?tymi klasami z common, nie powinno mie? to znaczenia w tym problemie.
- I pytanie dodatkowe: jako korzystacie z Mavena w IDE, w szczeg▒lno?ci w Eclipse? Jakich wtyczek u?ywacie? Z tego co wiem s? 3 opcje:
- - maven-eclipse-plugin + konfiguracja projektu za pomoc? polecenia mvn,
- - m2eclipse,
- - q4eclipse czy co? takiego, ale to jest podobno kiepskie;
- Aktualnie chodzi mi o jakie? rozwi?zanie, kt▒re dobrze integruje Mavena, Eclipse, Jav?ME i Androida, tzn ?ebym m▒g? kompilowa? projekty zar▒wno poprzez polecenie mvn jak i automatycznie Eclipsem i ?ebym m▒g? odpala? testy i MIDlety/ Activity zar▒wno z linii komend jak i z poziomu Eclipse.
- from_unixtime(post_time): 2012-03-29 15:09:44
- *************************** 65. row ***************************
- post_id: 833123
- text_content: Jest opcja do wy??czania sygnaturek w postach, ale przyda?aby si? te? opcja na pokazywanie sygnaturek w profilach. Aktualnie wy??czy?em w?a?nie pokazywanie sygnaturek w postach i nie da si? zobaczy? bez zmiany tego ustawienia lub wylogowania. Poza tym je?li kto? pisze du?o komentarzy, a ma?o post▒w, to te? jest dyskryminowany :]
- from_unixtime(post_time): 2012-04-01 18:14:27
- *************************** 66. row ***************************
- post_id: 833927
- text_content: Jak w temacie. Co zrobi? gdy chc? cofn?? +1, ale nie chc? da? -1?
- from_unixtime(post_time): 2012-04-04 09:57:48
- *************************** 67. row ***************************
- post_id: 836294
- text_content: Courtney Love does the math: http://www.salon.com/2000/06/14/love_7/singleton/
- The Promo Bay: http://www.ibtimes.com/articles/324682/20120405/pirate-bay-promotion-promo-artists-riaa-mpaa.htm
- from_unixtime(post_time): 2012-04-12 15:58:55
- *************************** 68. row ***************************
- post_id: 836476
- text_content: Generalnie z tego co do tej pory wiem klient CVSa w Eclipse umo?liwia tylko robienie modu?▒w (projekt▒w) w katalogu g?▒wnym i nie pozwala na po prostu stworzenie podkatalogu (albo mo?e ja nie mam praw do tego?), aby wrzuca? tam podprojekty.
- Generalnie to co chcia?bym osi?gn?? to (dalej m?cz? bileterk?):
- repo:
- - CVSROOT
- - jakie? inne projekty
- - m▒j projekt - bileterka
- -- parent
- -- javame
- -- common
- -- android-parent
- -- android
- -- android-it
- Struktur? chyba p?ask? musz? zostawi? bo szef upiera si? przy Eclipse.
- Da si? w og▒le stworzy? hierarchiczn? struktur? dla Mavena z poziomu eclipse?
- Ponadto w Eclipsie nie wida? projekt▒w typu parent, czyli tych z packaging=pom. Jak je zacommitowa? w takim razie?
- from_unixtime(post_time): 2012-04-13 11:19:05
- *************************** 69. row ***************************
- post_id: 837658
- text_content: Poleci kto? co? do wykrycia w czym by? napisany dany program? Jak na razie znam:
- - PEiD: http://www.peid.info/ - nieuaktualniany
- - ExEinfo PE: http://www.exeinfo.xwp.pl/
- from_unixtime(post_time): 2012-04-17 10:31:55
- *************************** 70. row ***************************
- post_id: 840419
- text_content: Zastanawiam si? czy w programach wymienionych w temacie s? zastosowane jakie? nietrywialne algorytmy. Linki do producent▒w:
- - http://www.info.rozklad.com/
- - http://www.agc.pl/
- Niby na stronie BusMana jest opis modu?▒w, kt▒re maj? korzysta? z takich nietrywialnych algorytm▒w:
- - http://www.agc.pl/agc_rozk.php
- - http://www.agc.pl/agc_sync.php
- Jednak z tak szcz?tkowych informacji nie da si? wywnioskowa? czy te algorytmy s? skomplikowane czy te? mo?e to jakie? proste heurezy.
- Zna kto? te programy w jakimkolwiek stopniu, albo czy jest w stanie oszacowa? z?o?ono?? (tzn stopie? skomplikowania) tych algorytm▒w?
- from_unixtime(post_time): 2012-04-26 16:27:26
- *************************** 71. row ***************************
- post_id: 840426
- text_content: http://www.comarch.pl/kariera/praca-w-kraju/informatyczne/programista-scala
- Czy kto? tam pracuje i czy patrz? tam na r?ce mocno (chodzi mi o np tzw mikrozarz?dzanie).
- (Jak z?y dzia? to przenie?cie)
- from_unixtime(post_time): 2012-04-26 16:52:23
- *************************** 72. row ***************************
- post_id: 843835
- text_content: Pojawia mi si? to cz?sto jak chc? napisa? komentarz, post czy temat. Nie da si? z tym nic zrobi?? Wcina mi posty czasami, a to jest frustruj?ce. Mam Chromium na Ubuntu.
- from_unixtime(post_time): 2012-05-07 22:44:45
- *************************** 73. row ***************************
- post_id: 844797
- text_content: Mam ZTE Blade II, konkretnie to zbrandowany na Red Bull MOBILE One.
- Chc? go zrootowa? i wgra? mu CyanogenMod, ale w og▒le adb mi go nie wykrywa.
- lsusb pokazuje:
- <code>Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
- Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
- Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
- Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
- Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
- Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
- Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
- Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
- Bus 002 Device 004: ID 0cf3:1006 Atheros Communications, Inc. TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271]
- Bus 006 Device 002: ID 09da:0080 A4 Tech Co., Ltd
- Bus 006 Device 003: ID 045e:00dd Microsoft Corp. Comfort Curve Keyboard 2000 V1.0
- Bus 001 Device 017: ID 19d2:1350 ZTE WCDMA Technologies MSM </code>
- mtp-detect pokazuje:
- <code>libmtp version: 1.1.3
- Listing raw device(s)
- No raw devices found.</code>
- adb devices pokazuje:
- <code>List of devices attached
- ???????????? no permissions</code>
- Pr▒bowa?em wcze?niej na Windows 7, a teraz na Ubuntu i ci?gle nie udaje mi si? do niego pod??czy?.
- from_unixtime(post_time): 2012-05-10 19:43:40
- *************************** 74. row ***************************
- post_id: 849183
- text_content: Chc? napisa? program w Scali, a jego cz??ci? ma by? np generator danych z kodu podanego w jakim? TextArea - og▒lnie chodzi mi o kompilacj? kodu w locie, potem jego wykonania, pobrania instancji jakiej? ustalonej klasy generuj?cej dane i odpytywaniem jej o kolejne dane.
- Problemem jest zrobienie tej funkcjonalno?ci (czyli osadzenie kompilatora w projekcie) tak, aby kompilacja przebiega?a bezproblemowo zar▒wno je?li odpal? program spod FSC (czy tam scalac) jak i pod SBT komend? 'run'.
- Pr▒bowa?em na kilka sposob▒w, tzn wkleja?em skrawki kodu znalezione w blogach na necie, ale problem dalej nierozwi?zany. Aktualnie kompilacja przebiega pomy?lnie je?li odpal? program spod FSC (wzgl?dnie scalac te? pewnie by zadzia?a?), ale komend? 'sbt run' ju? nie zadzia?a.
- Z tego co wyczyta?em np na https://github.com/harrah/xsbt/wiki/FAQ (dzia? How do I use the Scala interpreter in my code?) problem le?y w classloaderach, ale nie jestem specem od classloader▒w i nied?ugo sza?u chyba od nich dostan?.
- Jak na razie projekt sk?ada si? z dw▒ch plik▒w:
- - definicja kompilacji: lemontree-testbed/project/LemonTreeTestbedBuild.scala - http://4programmers.net/Pastebin/1762
- - plik ?r▒d?owy: lemontree-testbed/src/main/scala/com/github/tarsa/lemontree/LemonTreeTestbed.scala - http://4programmers.net/Pastebin/1763
- W obecnej postaci, przy odpalaniu komendy 'sbt run' wy?wietlany jest nast?puj?cy komunikat:
- <code>[error] (run-main) scala.tools.nsc.FatalError: object List does not have a member apply</code>
- w momencie kompilacji, tzn linijka 55. kodu ?r▒d?owego.
- Ma kto? pomys? jak to ogarn???
- from_unixtime(post_time): 2012-05-25 22:58:35
- *************************** 75. row ***************************
- post_id: 849414
- text_content: Pasuje za?o?y? jaki? w?tek z mniej lub bardziej bezsensownymi rankingami szk▒?.
- Na pocz?tek: http://www.sfora.pl/Oto-najlepsza-uczelnia-w-Polsce-Tu-najlepiej-studiowac-a43442
- from_unixtime(post_time): 2012-05-26 20:17:24
- *************************** 76. row ***************************
- post_id: 852598
- text_content: Chcia?bym sprawdzi? czy m▒j odbiornik GPS w telefonie w og▒le dzia?a. Zna si? kto? na flakach Androida/ CyanogenModa? Mam zrootowany telefon wi?c mo?e da si? jaki? plik podmieni?, ?eby telefon zacz?? np robi? logi z pe?n? komunikacj? z odbiornikiem.
- from_unixtime(post_time): 2012-06-06 10:14:16
- *************************** 77. row ***************************
- post_id: 852744
- text_content: Mam wra?enie, ?e w?amy na nawet spore serwisy si? coraz cz??ciej zdarzaj?. ZTCP to 4p niedawno zaliczy?o wpadk? :P a teraz np LinkedIn, kt▒ry jest niby dla 'profesjonalist▒w': http://niebezpiecznik.pl/post/wyciek-6-5-miliona-hashy-hasel-z-linkedin/
- Co chwil? wyciekaj? jakie? has?a z jakiego? serwisu i trzeba te has?a zmienia?, jak r▒wnie? pasuje generowa? osobne has?o do ka?dego serwisu. Maj?c wiele r▒?nych hase? nie idzie ich spami?ta?, a wi?c trzeba gdzie? zbiorczo zapisa? w jakim? zasobie (pliku zawieraj?cego np baz? danych). A co je?li ten zas▒b nam wycieknie? Zwykle stosuje si? wi?c has?o g?▒wne i/ lub dane jako klucz. A co je?li zapomnimy g?▒wnego has?a albo zgubimy dane klucz, lub no?nik na kt▒rym jest ten klucz si? zepsuje?
- Napiszcie jakie macie sposoby na przechowywanie hase? i z jakich program▒w do zarz?dzania has?ami korzystacie.
- from_unixtime(post_time): 2012-06-06 21:19:00
- *************************** 78. row ***************************
- post_id: 853198
- text_content: Specyfikacje API JavySE:
- * <a href="http://docs.oracle.com/javase/1.3/docs/api/">JavaSE 3</a>
- * <a href="http://docs.oracle.com/javase/1.4.2/docs/api/">JavaSE 4</a>
- * <a href="http://docs.oracle.com/javase/1.5.0/docs/api/">JavaSE 5</a>
- * <a href="http://docs.oracle.com/javase/6/docs/api/">JavaSE 6</a>
- * <a href="http://docs.oracle.com/javase/7/docs/api/">JavaSE 7</a>
- Tutoriale do JavySE:
- * <a href="http://docs.oracle.com/javase/tutorial/">The JavaTM Tutorials</a>
- JavaFX 2:
- * <a href="http://docs.oracle.com/javafx/2/api/index.html">Specyfikacja API</a>
- * <a href="http://docs.oracle.com/javafx/">Dokumentacja</a>
- Specyfikacje API JavyEE:
- * <a href="http://docs.oracle.com/javaee/1.2.1/api/">JavaEE 2</a>
- * <a href="http://docs.oracle.com/javaee/1.3/api/">JavaEE 3</a>
- * <a href="http://docs.oracle.com/javaee/1.4/api/">JavaEE 4</a>
- * <a href="http://docs.oracle.com/javaee/5/api/">JavaEE 5</a>
- * <a href="http://docs.oracle.com/javaee/6/api/">JavaEE 6</a>
- Tutoriale do JavyEE:
- * <a href="http://docs.oracle.com/javaee/1.3/tutorial/doc/">The J2EE Tutorial for the Sun ONE Platform</a>
- * <a href="http://docs.oracle.com/javaee/1.4/tutorial/doc/">The J2EE(TM) 1.4 Tutorial</a>
- * <a href="http://docs.oracle.com/javaee/5/tutorial/doc/">The Java EE 5 Tutorial</a>
- * <a href="http://docs.oracle.com/javaee/6/tutorial/doc/">The Java EE 6 Tutorial</a>
- Zestaw przyk?ad▒w w Javie:
- * <a href="http://www.java2s.com/">www.java2s.com</a>
- * <a href="http://rosettacode.org/wiki/Category:Java">Rosetta Code - Category: Java</a>
- from_unixtime(post_time): 2012-06-08 12:04:25
- *************************** 79. row ***************************
- post_id: 853246
- text_content: Hostowanie aplikacji w j?zyku Java i j?zykach kompilowanych do Javowego bajtkodu - zasady dzia?ania:
- Zwykle (?) serwisy hostuj?ce przyjmuj? od razu skompilowane aplikacje (np w plikach WAR) i nie zawieraj? kompilatora Javy. Jednocze?nie popularne j?zyki na platform? Java r▒?ne od j?zyka Java, np Scala, Groovy, Clojure, etc kompiluj? si? do bajtkodu prawie nie r▒?ni?cego si? od tego wygenerowanego z j?zyka Java. Z tego wzgl?du, o ile dany j?zyk nie wymaga jakich? funkcjonalno?ci niedostepnych na danym hostingu, to powinien dzia?a? tak dobrze jak j?zyk Java.
- Chmury obliczeniowe:
- <a href="https://developers.google.com/appengine/">Google App Engine</a>
- Cechy charakterystyczne:
- * Mocne ograniczenia, np brak mo?liwo?ci odpalania w?tk▒w, <a href="https://developers.google.com/appengine/docs/java/jrewhitelist">bia?a lista mo?liwych do u?ycia klas z biblioteki standardowej</a>, <a href="http://code.google.com/p/googleappengine/wiki/WillItPlayInJava">przegl?d kompatybilno?ci GAE/J z popularnymi j?zykami i frameworkami</a>
- * Niestandardowe API do wi?kszo?ci us?ug
- * Wysoce skalowalna baza danych (oparta na BigTable)
- * Ma?e instancje JVM generuj?ce odpowiedzi, obecnie serwuj?ce co najwy?ej kilka odpowiedzi jednocze?nie - nale?y zmieni? model aplikacji tak, aby ?adowa?a si? jak najszybciej
- * Mo?na przetestowa? za darmo, a darmowe limity s? nawet do?? du?e
- <a href="http://aws.amazon.com/ec2/">Amazon Elastic Compute Cloud</a>
- Cechy charakterystyczne:
- * Brak wielu ogranicze? z GAE/J
- * Standardowy model serwowania tre?ci - zamiast tworzy? instancje na ??danie, instancje s? mniej wi?cej trwa?e, dzi?ki temu mo?na budowa? aplikacje, kt▒re wolno si? uruchamiaj?, np korzystaj? z Hibernate, JBoss, itp itd
- * Mo?na przetestowa? za darmo, a darmowe limity s? nawet do?? du?e
- <a href="http://www.heroku.com/">Heroku</a>
- Cechy charakterystyczne:
- * Wiele dost?pnych j?zyk▒w z pe?n? funkcjonalno?ci?
- * Brak darmowych opcji
- Hosting standardowy
- <a href="http://www.eatj.com/">EATJ</a>
- Cechy charakterystyczne:
- * Lokalizacja: Kalifornia, USA
- * Mo?na przetestowa? za darmo; jest trial, ale bardzo upierdliwy - Tomcat jest wy??czany co 6 godzin i trzeba si? logowa?, by go w??czy?
- Lista jest kiepska i ma?o wyczerpuj?ca, bo mam niewielkie do?wiadczenie z hostingami. Wszelkie uwagi i sugestie mile widziane.
- from_unixtime(post_time): 2012-06-08 15:37:25
- *************************** 80. row ***************************
- post_id: 857022
- text_content: Google niby udost?pni? Google Wave, ale z tego co na szybko przejrza?em, to ?adne demo on-line nie oferuje playbacku, a to jest przecie? g?▒wny ficzer.
- Znacie co? z podobn? funkcjonalno?ci??
- from_unixtime(post_time): 2012-06-21 11:57:33
- *************************** 81. row ***************************
- post_id: 857358
- text_content: Mia?em gor?c? dyskusj? na ten temat w firmie dzisiaj. Co o tym my?licie?
- Kolegom z pracy fasada kojarzy si? przede wszystkim z http://en.wikipedia.org/wiki/Interface_segregation_principle (tzn nie znaj? tej zasady, ale ich pogl?d na fasad? jest mniej wi?cej taki jak meritum tej zasady) i s? niech?tni temu, ?eby fasada zarz?dza?a jakimkolwiek stanem.
- from_unixtime(post_time): 2012-06-22 11:51:50
- *************************** 82. row ***************************
- post_id: 857474
- text_content: Czy w ka?dej firmie b?d? zmuszony do walki z g?upot? szefa czy mened?era, wzgl?dnie z mamtowdupizmem lub idiotyzmem poprzednik▒w? Jak znale?? firm? gdzie b?d? m▒g? robi? co? ambitnego?
- Dop▒ki zajmowa?em si? programowaniem jako hobby (czy to na studiach czy przed studiami) to by?o do?? fajnie, a teraz to ju? jest lipa totalna. Nie mam nawet si?y na rozw▒j po godzinach.
- from_unixtime(post_time): 2012-06-22 17:41:58
- *************************** 83. row ***************************
- post_id: 857960
- text_content: Szefo chce ?eby mo?na by?o wyci?gn?? ?atwo z bazy wszystkie logi nale??ce do danej transakcji. Trzeba wi?c zapisa? w logach numer transakcji. Logowanie odbywa si? na zewn?trznych urz?dzeniach, kt▒re przesy?aj? logi do centralnej bazy poprzez webservie. Jak skojarzy? zdarzenia z numerami transakcji?
- 1. Aktualne rozwi?zanie, kt▒re nie podoba si? szefowi:
- - w kodzie u?ywa si? normalnej fasady SLF4J,
- - zrobi?em odpowiedniego appendera, kt▒ry sobie sam wyci?ga "naoko?o" numer transakcji i wrzuca par? (numer transakcji, ILoggingEvent) do kolejki,
- - z kolejki asynchronicznie ju? lec? logi do bazy poprzez webservice (asynchroniczno?? jest w?a?nie dlatego, ?e to leci przez webservice),
- - numer transakcji jest osobn? kolumn? w bazie/ polem w klasie opisuj?cej logowane zdarzenie,
- 2. Szefo proponuje:
- - przepychanie numeru transakcji do ka?dej klasy w aplikacji, tak?e niskopoziomowych warstwach, typu warstwy komunikacji z urz?dzeniami,
- - opakowanie loggera we w?asne klasy; w zasadzie jest to napisanie w du?ej mierze w?asnego loggera, bo standardowe appendery z logbacka czy log4ja nie obs?uguj? dodatkowych p▒l w ILoggingEvent ZTCW,
- - tak jak poprzednio by?aby kolejka do asynchronicznego wysy?ania zdarze?, a numer transakcji by?by osobnym polem/ kolumn?,
- 3. M▒j nowy pomys?:
- - zamiast kojarzy? ka?de zdarzenie z numerem transakcji logowa? osobno zdarzenie typu: rozpocz?cie transakcji, zako?czenie transakcji, przerwanie transakcji, etc
- - rozr▒?nienie pomi?dzy normalnymi logami, a logami reprezentuj?cymi zmian? stanu transakcji zrobi? za pomoc? marker▒w (to jeden z wbudowanych mechanizm▒w log4j/ logbacka do rozr▒?niania zdarze?),
- - nie trzeba opakowywa? logger▒w, nie trzeba wyci?ga? numeru transakcji "naoko?o",
- - zgodno?? ze wszystkimi appenderami wbudowanymi w logbacka,
- - tak samo u?y?bym kolejki do wypychania zdarze? do zapisu w centralnej bazie,
- - nie by?oby osobnego pola/ kolumny w bazie do numeru transakcji,
- - przez co utrudnione by?oby wyszukiwanie log▒w nale??cych do danej transakcji - za?▒?my, ?e zdarzenie rozpocz?cia transakcji mia?oby znacznik SessionBegin, znacznik zako?czenia SessionEnd, a numer transakcji wepchn??bym jako Stringa w pole message zdarzenia to, aby wyci?gn?? zdarzenia z danej transakcji musia?bym:
- -- wyci?gn?? wszystkie zdarzenia z markerami SessionBegin lub SessionEnd,
- -- z nich wybra? tylko te, kt▒re maj? w message zapisany jako string numer transakcji, kt▒ra mnie interesuje,
- -- wyszuka? te logi, kt▒re maj? timestamp pomi?dzy timestampem wyszukanego SessionBegin, a wyszukanego SessionEnd,
- 3a. Pomys? podobny do 3. z tym, ?e:
- - timestampy rozpocz?cia, zako?czenia, przerwania, itp znajdowa?yby si? w osobnej tabeli w bazie, dzi?ki czemu wyszukiwanie by?oby znacznie bardziej eleganckie i mia?o wi?ksz? wydajno??,
- - w sumie do?? rozs?dne rozwi?zanie, tyle ?e trzeba dwie tabele i tak samo jak w 3. nie wida? od razu przy logu numeru transakcji, gdy przegl?da si? baz? bezpo?rednio,
- W rozwi?zaniu 1. wad? kt▒r? mi szef wytyka jest to, ?e od momentu wywo?ania Logger.log do momentu odpalenia appendera, kt▒ry obs?uguje ten log mo?e min?? du?o czasu i przez ten czas inny w?tek zmieni numer transakcji. Nie zag??bia?em si? jeszcze mocno w logbacka (to nast?pca log4j wi?c powinien dzia?a? podobnie jak log4j), ale tam jest chyba tak, ?e metoda Logger.log czeka a? wszystkie appendery zako?cz? swoj? dzia?alno?? i wszystkie s? odpalane po kolei w jednym w?tku. W takim przypadku niewiele by to zmienia?o, bo nawet jakbym mia? numer sesji od razu podany, to m▒g?by nast?pi? przypadek typu: wchodzimy do metody i na pocz?tku numer sesji to 1, metoda trwa d?ugo i w mi?dzyczasie inny w?tek zmienia numer sesji na 2 albo null, a my potem w tej d?ugiej metodzie chcemy co? zalogowa?. Zalogowa? ze starym numerem transakcji czy z nowym? Jak kojarzy? zdarzenia z transakcjami w aplikacjach wielow?tkowych?
- A czy je?li mamy transakcj? to nie powinien by? jeden w?tek, kt▒ry ni? zarz?dza? Za?▒?my ?e jest g?▒wny w?tek W0 i poboczne w?tki W1..Wn stworzone przez W0. Najbezpieczniej by?oby wtedy, gdyby W0 zrobi? join na wszystkich w?tkach od W1 do Wn. Tzn dok?adniej to w momencie zar▒wno rozpocz?cia jak i zako?czenia transakcji by?by tylko jeden aktywny w?tek - ten kt▒ry zarz?dza transakcjami.
- Dodam, ?e chodzi mi o programowanie automatu, kt▒ry przyjmuje pieni?dze, ale z funkcjonalno?ci? logowania do serwisu przez internet i kupowania przez internet. W sumie w automatach tego typu (np banknomatach) transakcje s? raczej do b▒lu liniowe, zdaje mi si?, ?e nic nie jest robione w nich asynchronicznie. W takim przypadku nie ma problemu z dobieraniem si? do numeru transakcji "naoko?o" tzn nie podaj?c go w Logger.log tylko zast?puj?c to wyci?ganiem numeru transakcji w appenderze - skoro wszystko dzieje si? linowo, to i numer transakcji w appenderze b?dzie zawsze taki sam jak w momencie wywo?ania metody Logger.log
- from_unixtime(post_time): 2012-06-24 12:49:14
- *************************** 84. row ***************************
- post_id: 858234
- text_content: Jak na razie korzystam z Orange POP i nawet jest OK bo i tak ma?o dzwoni? czy SMSuj?, a do tej pory w og▒le nie korzysta?em z Internetu przez kom▒rk?. No ale skoro ju? kupi?em chi?skiego smartfona i wgra?em mu CyanogenModa to ch?tnie bym wykorzysta? jego mo?liwo?ci w terenie (np jako nawigacj?, sprawdzenie poczty, u?ycie wyszukiwarki etc)
- Orange Free na kart? to chyba najlepszy wyb▒r je?li chodzi o tani net na kart? w Orange, no nie? S? jakie? kruczki w tym. Czyta?em, ?e nie da si? sprawdzi? wykorzystania limitu na koncie promocyjnym dla przyk?adu.
- from_unixtime(post_time): 2012-06-25 07:52:01
- *************************** 85. row ***************************
- post_id: 858968
- text_content: Czy kto? korzysta z takiej kombinacji? Jak wra?enia, te? macie BSODy?
- Moja ekscytuj?ca historia z t? kombinacj?:
- Zainstalowa?em Win7 w trybie Compatibility Mode ze staro?ytnym protoko?em IDE (m▒wi? o ustawieniach w BIOSie), a niedawno zmieni?em w BIOSie ustawienie na AHCI (nota bene: wersja AHCI i tak pewnie nie pierwszej ?wie?o?ci, sama wersja BIOSu jest z 2009) i Windows 7 przesta? si? bootowa?. Uda?o mi si? jednak ustawi? Windowsa tak, ?eby dzia?a? na AHCI, z tym, ?e czasami sypie BSODami i si? resetuje. Mo?e nied?ugo sytuacja si? unormuje (tzn zwiechy przy bootowaniu spowodowa?y jakie? b??dy w strukturze logicznej na dysku chyba).
- Ubuntu lata bezproblemowo niezale?nie od ustawie? w BIOSie.
- from_unixtime(post_time): 2012-06-27 10:40:45
- *************************** 86. row ***************************
- post_id: 860029
- text_content: Przysz?o mi pismo, ?e do 10 lipca trzeba wybra? OFE. Czy jest jaka? znaczna r▒?nica pomi?dzy nimi? Tzn chodzi mi o ca?kowity zysk/ strat? w ci?gu np ostatnich 10 lat (nie wiem ile czasu te OFE dzia?aj? wi?c je?li 10 lat to za du?o to niech b?dzie i 5 lat).
- ZTCW OFE i tak musz? zdecydowan? wi?kszo?? pieni?dzy lokowa? albo w obligacjach albo zgodnie z jakimi? dyrektywami z g▒ry, np narzucone jest inwestowanie w Polsce. Zak?adam, ?e OFE wci?ga por▒wnywalne lub nawet wi?ksze prowizje ni? ZUS (bo w sumie nie ma powodu, ?eby banksterzy dbali o klient▒w je?li sami generuj? papierowy czy plastikowy pieni?dz fiducjarny). Sk?adki do OFE ju? s? ma?e i nie zapowiada si? na to, ?eby powr▒ci?y do stanu pierwotnego. Pr?dzej kt▒ry? premier zrobi kolejny skok na OFE i ca?kowicie je zlikwiduje.
- Pismo, kt▒re do mnie przysz?o zawiera?o ostrze?enie, ?e OFE zostanie dla mnie wylosowane. A mo?e jednak zrezygnowa? w og▒le z OFE? Zna kto? jakie? dobre zestawienie historyczne zysk▒w poszczeg▒lnych OFE?
- from_unixtime(post_time): 2012-07-02 11:57:43
- *************************** 87. row ***************************
- post_id: 861187
- text_content: Czasem u?ywam skr▒t▒w, kt▒re by? mo?e nie s? znane wi?kszo?ci forumowicz▒w i chcia?bym ?eby wiedzieli o co chodzi. Ci co znaj? te skr▒ty nie musz? czyta? wtedy wielu wyraz▒w.
- Znacznik ABBR i jego atrybut TITLE rozwi?zywa?yby spraw?.
- from_unixtime(post_time): 2012-07-07 12:06:13
- *************************** 88. row ***************************
- post_id: 861274
- text_content: Wklepa?em t? fraz? do G, ale jakie? takie bez sensu wyniki wychodz?. Czy komukolwiek uda?o si? zmatowi? ekran, tak ?eby nie pogorszy?a si? jako?? obrazu?
- from_unixtime(post_time): 2012-07-07 16:04:37
- *************************** 89. row ***************************
- post_id: 863863
- text_content: Niech mi kto? poda instrukcj? krok po kroku, bo dziwne rzeczy si? u mnie dziej?.
- Mam Eclipse 3.7 i w Debug Configurations nie mam nic zwi?zanego z antowymi taskami.
- from_unixtime(post_time): 2012-07-17 11:27:32
- *************************** 90. row ***************************
- post_id: 868060
- text_content: Kto? wie co robi ?rodkowe pokr?t?o? I jak ustawi? t? pralk?, ?eby suszy?a ubrania? ZTCP kiedy? mi wysuszy?a.
- {{Image:Bez nazwy.jpg}}
- from_unixtime(post_time): 2012-08-01 21:19:11
- *************************** 91. row ***************************
- post_id: 868657
- text_content: Najpierw mo?e zapodam m▒j brudnopis z rozpiskami:
- <code=haskell>{-
- class Monad m where
- (>>=) :: m a -> (a -> m b) -> m b
- return :: a -> m a
- -}
- newtype Cont r a = Cont { runCont :: ((a -> r) -> r) }
- instance Monad (Cont r) where
- return n = Cont (\k -> k n)
- m >>= f = Cont (\k -> runCont m (\a -> runCont (f a) k))
- class (Monad m) => MonadCont m where
- callCC :: ((a -> m b) -> m a) -> m a
- instance MonadCont (Cont r) where
- callCC f = Cont $ \k -> runCont (f (\a -> Cont $ \_ -> k a)) k
- {-
- bar :: Cont r Int
- bar = callCC $ \k -> do
- let n = 5
- k n
- return 25
- -}
- bar :: Cont r Int
- bar = callCC $ \k ->
- k 5 >>= \_ ->
- Cont (\k -> k 25)
- {-
- baz :: (Integer -> Cont r a) -> Cont r Integer
- baz = \k ->
- k 5 >>= \_ ->
- Cont (\k -> k 25)
- -}
- baz :: (Integer -> Cont r a) -> Cont r Integer
- --baz = \k -> Cont (\l -> runCont (k 5) (\a -> runCont ((\_ -> Cont (\k -> k 25)) a) l))
- --baz = \k -> Cont (\l -> runCont (k 5) (\_ -> runCont (Cont (\k -> k 25)) l))
- --baz = \k -> Cont (\l -> runCont (k 5) (\_ -> (\k -> k 25) l))
- baz = \k -> Cont (\l -> runCont (k 5) (\_ -> l 25))
- foo :: (Integer -> (a -> r) -> r) -> (Integer -> r) -> r
- foo = \k l -> k 5 (\_ -> l 25)
- boo :: (Integer -> r) -> r
- --boo = callCC (\k -> Cont (\l -> runCont (k 5) (\_ -> l 25)))
- --boo = \m -> ((\k l -> k 5 (\_ -> l 25)) (\a -> (\_ -> m a))) m
- --boo = \m -> ((\k -> k 5 (\_ -> m 25)) (\a -> (\_ -> m a)))
- --boo = \m -> ((\a -> (\_ -> m a)) 5 (\_ -> m 25))
- --boo = \m -> ((\a _ -> m a) 5 (\_ -> m 25))
- --boo = \m -> ((\a -> m a) 5)
- boo = \m -> m 5
- {-
- -}
- add x y = x + y
- square x = x * x
- add_cont :: Int -> Int -> Cont r Int
- add_cont x y = return (add x y)
- square_cont :: Int -> Cont r Int
- square_cont x = return (square x)
- {-
- pythagoras_cont :: Int -> Int -> Cont r Int
- pythagoras_cont x y =
- do x_squared <- square_cont x
- y_squared <- square_cont y
- sum_of_squares <- add_cont x_squared y_squared
- return sum_of_squares
- -}
- --m >>= f = Cont (\k -> runCont m (\a -> runCont (f a) k))
- pythagoras_cont :: Int -> Int -> Cont r Int
- --pythagoras_cont x y = square_cont x >>= (\x_squared -> square_cont y >>= (\y_squared -> add_cont x_squared y_squared >>= (\sum_of_squares -> Cont (\k -> k sum_of_squares))))
- --pythagoras_cont x y = square_cont x >>= (\x_squared -> square_cont y >>= (\y_squared -> (add_cont x_squared y_squared >>= (\sum_of_squares -> Cont (\k -> k sum_of_squares)))))
- --pythagoras_cont x y = square_cont x >>= (\x_squared -> square_cont y >>= (\y_squared -> Cont (\l -> runCont (add_cont x_squared y_squared) (\a -> runCont ((\sum_of_squares -> Cont (\k -> k sum_of_squares)) a) l))))
- --pythagoras_cont x y = square_cont x >>= (\x_squared -> square_cont y >>= (\y_squared -> Cont (\l -> runCont (add_cont x_squared y_squared) (\a -> runCont (Cont(\k -> k a)) l))))
- --pythagoras_cont x y = square_cont x >>= (\x_squared -> square_cont y >>= (\y_squared -> Cont (\l -> runCont (add_cont x_squared y_squared) (\a -> l a))))
- --pythagoras_cont x y = square_cont x >>= (\x_squared -> Cont (\k -> runCont (square_cont y) (\b -> runCont ((\y_squared -> Cont (\l -> runCont (add_cont x_squared y_squared) (\a -> l a))) b) k)))
- --pythagoras_cont x y = square_cont x >>= (\x_squared -> Cont (\k -> runCont (square_cont y) (\b -> runCont (Cont (\l -> runCont (add_cont x_squared b) (\a -> l a))) k)))
- --pythagoras_cont x y = Cont (\n -> runCont (square_cont x) (\c -> runCont ((\x_squared -> Cont (\k -> runCont (square_cont y) (\b -> runCont (Cont (\l -> runCont (add_cont x_squared b) (\a -> l a))) k))) c) n))
- --pythagoras_cont x y = Cont (\n -> runCont (square_cont x) (\c -> runCont (Cont (\k -> runCont (square_cont y) (\b -> runCont (Cont (\l -> runCont (add_cont c b) (\a -> l a))) k))) n))
- --pythagoras_cont x y = Cont (\n -> runCont (square_cont x) (\c -> runCont (Cont (\k -> runCont (square_cont y) (\b -> runCont (add_cont c b) (\a -> k a)))) n))
- pythagoras_cont x y = Cont (\k -> runCont (square_cont x) (\c -> runCont (square_cont y) (\b -> runCont (add_cont c b) (\a -> k a))))</code>
- Sprawa jest taka. Rozumiem mniej wi?cej na czym polegaj? kontynuacje i jak dzia?a monada do sk?adania kontynuacji, natomiast za choler? nie jestem w stanie zrozumie? jak dzia?a funkcja callCC. Moja rozpiska metody potwierdza, ?e jak wywo?am aktualn? kontynuacj? w bloku do to nast?pne funkcje nie zostan? wykonane. Tyle, ?e dalej nie potrafi? sobie opracowa? jakich? analogii mniej abstrakcyjnych ni? znaczki.
- from_unixtime(post_time): 2012-08-04 21:12:19
- *************************** 92. row ***************************
- post_id: 869563
- text_content: Oto jak wa?ny jest izolowany od Internetu backup: http://pclab.pl/news50643.html
- from_unixtime(post_time): 2012-08-07 13:34:32
- *************************** 93. row ***************************
- post_id: 869678
- text_content: Oryginalny problem wydawania reszty to problem w kt▒rym musimy wyda? dan? kwot? minimaln? ilo?ci? monet/ banknot▒w zak?adaj?c, ?e mamy niesko?czon? ilo?? egzemplarzy monet/ banknot▒w ka?dego nomina?u. S? dwie wersje problemu: jedna w kt▒rej mamy obliczy? tylko ile minimalnie musimy u?y? monet i banknot▒w (ta wersja mnie nie interesuje) i druga w kt▒rej opr▒cz tego musimy znale?? kombinacj? monet i banknot▒w o minimalnej ilo?ci kt▒ra realizuje wyp?at?.
- Zak?adaj?c, ?e kwota do wydania to `kwota`, a nomina?y s? zawarte w tablicy `nomina?y`, uda?o mi si? stworzy? algorytm, b?d?cy lekk? modyfikacj? algorytmu z Wiki, kt▒ry liczy rozwi?zanie w czasie O(`kwota` * `nomina?y`.length) i u?ywa, jak mi si? wydaje po paru kr▒tkich pr▒bach, O(`nomina?y`.length) pami?ci.
- Algorytm jest tutaj: http://ideone.com/d6suB
- Czy kto? mo?e potwierdzi?, ?e ten algorytm rzeczywi?cie potrzebuje tylko O(`nomina?y`.length) pami?ci? A mo?e gdzie? na necie ju? jest rozwi?zanie o interesuj?cej mnie z?o?ono?ci.
- Algorytm wykorzystuje niemutowalne listy jednokierunkowe. Dzi?ki temu mog? utworzy? now? list? z listy o dowolnej d?ugo?ci i nowego elementu w czasie sta?ym i u?ywaj?c sta?? ilo?? dodatkowej pami?ci. Usuwaniem w?z?▒w, kt▒re przestaj? by? osi?galne zajmuje si? oczywi?cie od?miecacz wbudowany w maszyn? wirtualn?.
- Docelowo chcia?bym mie? bardziej rozbudowany algorytm. Ot▒z w moim problemie ka?dy nomina? ma ograniczon? liczb? egzemplarzy. Ponadto chcia?bym nada? priorytety konkretnym monetom i banknotom (nie konkretnym nomina?om, a konkretnym monetom czy banknotom!). Priorytety s? po to, ?eby zapobiega? jak tylko si? da wyp?acaniu danego nomina?u poni?ej limitu ostrzegawczego - czyli docelowo po to, abym zminimalizowa? ryzyko, ?e nie bed? m▒g? komu? wyp?aci? pieni?dzy. Wobec tego, moim pomys?em jest zrobienie tylu krok▒w ile jest konkretnie wszystkich monet i banknot▒w, a nie tylu krok▒w ile jest dost?pnych nomina?▒w.
- Zak?adaj?c najprostszy wariant rozwi?zania, czyli utworzenie ca?ej macierzy takiej jak pokazana na Wiki zjad?oby spor? ilo?? pami?ci. Jednostk? w kt▒rej licz? pieni?dze jest grosz, a monet i banknot▒w mo?e by? w sumie kilkaset. Zak?adaj?c wyp?at? 500 z?, czyli 50 000 groszy i 500 monet i banknot▒w razem oraz maj?c 8 bajt▒w na ka?dy element macierzy dostaj? zaj?to?? pami?ci r▒wn?: 50 000 * 500 * 8 B = 200 MB Chocia? w sumie to mo?e i nie tak znowu du?o.
- Macie jakie? ciekawe pomys?y jak to rozwi?za??
- from_unixtime(post_time): 2012-08-07 18:03:18
- *************************** 94. row ***************************
- post_id: 870616
- text_content: Robimy z kumplem w robocie aplikacj? opart? o automat sko?czony i wydaje si? to nam du?o lepszym rozwi?zaniem ni? go?y MVC z klejeniem handler▒w i event▒w na 100 mln r▒?nych sposob▒w. Aplikacja jest w zasadzie desktopowa (kiosk mode), trudno?ci sprawia nam zamodelowanie wywo?a? asynchronicznych w maszynie stan▒w, jak i np osobnych w?tk▒w licz?cych/ komunikuj?cych si? ze ?wiatem zewn?trzny ?yj?cych troch? w?asnym ?yciem.
- Czy kto? robi? aplikacje, szczeg▒lnie chodzi o aplikacje z GUI, oparte na automatach sko?czonych? Je?li tak to prosz? o jak?? sprawdzon? literatur?.
- from_unixtime(post_time): 2012-08-10 00:44:01
- *************************** 95. row ***************************
- post_id: 871995
- text_content: chc? przeportowa? m▒j algorytm kompresji bezstratnej do javascript, a moja znajomo?? javascript jest kiep?ciutka. czy zna z was kto? tutorial do javascriptu kt▒ry skupia si? na pisaniu w nim algorytm▒w? wiem, ?e np w najnowszym ecmascript s? typed arrays i s? one chyba szybsze ni? zwyk?e tablice, ale to tyle je?li chodzi o wydajno??.
- from_unixtime(post_time): 2012-08-14 19:42:19
- *************************** 96. row ***************************
- post_id: 875229
- text_content: Chodzi mi mniej wi?cej o jaki? tag typu `< ukryj >tre??< /ukryj >`. Przed tre?ci? by?by wy?wietlany przycisk z napisem "poka?", a tre?? by?aby domy?lnie ukryta. Po klikni?ciu tre?? by?aby pokazywana.
- from_unixtime(post_time): 2012-08-26 18:11:54
- *************************** 97. row ***************************
- post_id: 876839
- text_content: Czy?bym by? jedynym userem siedz?cym na forum? Nawet Googlebot opu?ci? 4p?
- {{Image:13243242675040fd2cecb72.png}}
- from_unixtime(post_time): 2012-08-31 18:07:08
- *************************** 98. row ***************************
- post_id: 877414
- text_content: Zrobi?em kolejne podej?cie do robienia GUI do mojego algorytmu kompresji :p Tym razem pokierowa?a mn? ch?? sprawdzenia jak klepie si? interfejsy w Swingu z u?yciem Java Beans, tzn PropertyChangeSupport, Beans Binding, itp Og▒lnie planuj? zaimplementowa? m▒j algo w Javie (co ju? jest ale brakuje interfejsu linii polece?), JavaScripcie, Pythonie, Scali i by? mo?e w Haskellu, a potem por▒wna? wydajno?? :]
- Najbardziej interesuje mnie co (potencjalnie) powinienem poprawi?, tzn jakie? irytuj?ce zachowanie GUI czy kiepsko zaprojektowany kod.
- ?r▒d?a projektu na GitHubie: https://github.com/tarsa/TarsaLZP
- from_unixtime(post_time): 2012-09-02 21:45:37
- *************************** 99. row ***************************
- post_id: 877698
- text_content: Te? tak macie?
- Sprawdza?em w Firefoksie i d?wi?k nie jest przesterowany, g?o?no?? jest normalna. W Chrome przy takich samych ustawieniach d?wi?k sporo g?o?niejszy i masakrycznie przesterowany. Siedz? na Ubuntu.
- from_unixtime(post_time): 2012-09-04 07:57:05
- *************************** 100. row ***************************
- post_id: 880733
- text_content: M▒j poprzedni post opisuj?cy ten problem chyba znikn?? (bo chyba go napisa?em w dziale newbie), no ale problem jest taki, ?e mam sobie tablic? bajt▒w, mo?e to by? typowana tablica ale nie musi. Chc? t? tablic? w jakikolwiek w miar? wydajny spos▒b zrzuci? na dysk. Aktualnie mam taki kod: http://4programmers.net/Pastebin/1880
- Pytanie: co wrzuci? do saveResults, ?eby da?o si? zapisa? dane na dysk w 100% niezmienione i z sensown? pr?dko?ci? (np max kilkana?cie sekund na 100 megowy plik)? Szuka?em po Googlach, ale nie mam cierpliwo?ci do klejenia rozwi?zania z krzywych skrawk▒w.
- from_unixtime(post_time): 2012-09-14 22:47:44
- *************************** 101. row ***************************
- post_id: 884121
- text_content: Jakie znacie i u?ywacie preparaty na popraw? wzroku i/ lub zmniejszenie zm?czenia oczu? Prosz? o opinie.
- Poszuka?em w Google i znalaz?em info, ?e nast?puj?ce substancje pomagaj?: luteina, zeaksantyna, astaksantyna - s? to antyoksydanty. Co o tym s?dzicie?
- from_unixtime(post_time): 2012-09-28 15:37:30
- *************************** 102. row ***************************
- post_id: 886231
- text_content: Mam taki kod:
- <code=java>class Base {
- final int var1;
- int var2 = 6;
- public Base(final int var1) {
- this.var1 = var1;
- }
- int getX() {
- return var1;
- }
- }
- class Derived extends Base {
- final int var3;
- int var4 = 8;
- public Derived(final int var1, final int var3) {
- super(var1);
- this.var3 = var3;
- }
- @Override
- int getX() {
- return super.getX() + var4;
- }
- }</code>
- Chc? go przet?umaczy? 1:1 do JavaScriptu. Jak to zrobi??
- from_unixtime(post_time): 2012-10-07 21:46:58
- *************************** 103. row ***************************
- post_id: 887955
- text_content: Mam taki kod i dzia?a on zgodnie z zamiarami w Operze, a w Chromie i Firefoksie nie.
- http://4programmers.net/Pastebin/1906
- Interesuj?ca linijka to:
- <code=javascript>var status = document.getElementById("status"); status.innerText = "testujemy";</code>
- Natomiast je?li zrobi? co? takiego to dzia?a we wszystkich przegl?darkach:
- http://4programmers.net/Pastebin/1907
- Interesuj?ca linijka to:
- <code=javascript>document.getElementById("status").innerText = "testujemy";</code>
- Czy mo?na w prosty spos▒b zrobi? zmienn? tak jak w pierwszym przyk?adzie, ale tak ?eby dzia?a?a (we wszystkich przegl?darkach) jak w drugim?
- from_unixtime(post_time): 2012-10-14 12:54:30
- *************************** 104. row ***************************
- post_id: 896788
- text_content: ZTCW to w .NET jest TCO (tail call optimizaiton). Moje pytanie dotyczy jego obserwowalnych efekt▒w tzn dok?adnie chodzi mi o to, czy w??czanie i wy??czanie TCO wp?ywa na raportowane przez Exceptiony stacktrace. Np mam funkcj?:
- <code>
- bleble(n) = {
- if (n == 0) {
- throw new Exception("dupa");
- } else {
- bleble(n - 1);
- }
- }
- </code>
- I teraz pytanie czy jak jest w??czone TCO to czy z?apany Exception b?dzie pokazywa?, ?e metoda by?a n razy wywo?ana rekurencyjnie?
- Analogicznie chcia?bym wiedzie? jak sprawa wygl?da w przypadku bardziej skomplikowanych wywo?a? ogonowych, nie tylko rekurencja ogonowa, ale tak?e np wzajemna rekurencja ogonowa N funkcji.
- Do tego jeszcze pytanie og▒lniejsze (zak?adaj?c, ?e .NET nie spe?nia powy?szych oczekiwa?):
- Czy istnieje jakakolwiek platforma programistyczna, kt▒ra przeprowadza?aby TCO w taki spos▒b, ?eby zachowa? stacktrace takie jakie by?y przed TCO?
- from_unixtime(post_time): 2012-11-15 16:57:06
- *************************** 105. row ***************************
- post_id: 907537
- text_content: Mam sobie wiele podkatalog▒w w jednym g?▒wnym katalogu i w niekt▒rych z tych podkatalog▒w znajduje si? plik `lock`. Chc? wypisa? wszystkie te podkatalogi, a obok ka?dej nazwy podkatalogu dopisa? napis LOCK lub FREE w zale?no?ci od tego czy plik `lock` znajduje si? w tym podkatalogu. Jak to zrobi??
- from_unixtime(post_time): 2012-12-13 14:49:30
- *************************** 106. row ***************************
- post_id: 923880
- text_content: Np takie pozycje jak:
- - Innovations New Advanced Teachers Book
- - Innovations New Advanced Teachers Resource Book
- Czy mog? si? do czego? przyda? osobie kt▒ra uczy si? na w?asn? r?k??
- Dok?adniej to firma sponsoruje niby kurs angielskiego i jest na nim ta seria u?ywana, ale nie zawsze jestem na tych zaj?ciach, a chcia?bym to dobrze przerobi?.
- from_unixtime(post_time): 2013-02-06 19:15:44
- *************************** 107. row ***************************
- post_id: 930245
- text_content: Troch? n00bskie pytanie, ale przejd?my do rzeczy.
- Jest sobie optymalizator, tzn program optymalizuj?cy za pomoc? algorytm▒w genetycznych parametry na podstawie funkcji kosztu. Jest tutaj: http://encode.ru/threads/1679-Question-about-LPAQ1-mixer?p=32460&viewfull=1#post32460 i jest napisany w C++
- Ja napisa?em sobie program w czystym C, np tutaj: http://encode.ru/threads/1671-Demixer-new-tree-based-bitwise-CM-codec-is-in-development?p=32455&viewfull=1#post32455
- Chc? go zintegrowa?. Autor optymalizatora napisa? o "compile in", ale przy zwyk?ym zaincludeowaniu moich plik▒w z kodem C do kodu C++ (tzn do funkcji rastrigin.cpp) jest troch? rzygania errorami. Zreszt? nie chc? ?eby np pliki nag?▒wkowe czy co? innego si? gryz?o.
- My?l? o tym, by po??czy? pliki OBJ (czy jak im tam). Z drugiej strony nie chc? robi? z mojego programu biblioteki, chc? tylko wyeksportowa? jedn? funkcj?.
- Pytanie: jak wyeksportowa? funkcj? oraz co zaimportowa? do Code::Blocks i w kt▒rym miejscu, tak ?eby:
- 1. najlepiej nie musie? nic kompilowa? z konsoli,
- 2. nie zmienia? typu mojego programu na bibliotek? (bo nie robi? biblioteki, a samodzielny program),
- from_unixtime(post_time): 2013-03-02 17:07:55
- *************************** 108. row ***************************
- post_id: 934011
- text_content: Mam Ubuntu 12.04 64-bit, NetBeans 7.3.
- Najpierw ustawi?em: `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope`
- Projekt mam w: `~/NetBeansProjects/Demixer`
- Binarka jest w: `~/NetBeansProjects/Demixer/dist/Debug/GNU-Linux-x86/demixer`
- Valgrinda odpalam tak:
- <code>piotrek@p5q-pro:/tmp/cm$ valgrind --vgdb=yes --vgdb-error=0 --track-origins=yes ~/NetBeansProjects/Demixer/dist/Debug/GNU-Linux-x86/demixer encode order=63 nodesNumber=10k < ~/corpora/maxcomp/world95.txt > world95.txt.e63 2> valgrind.txt</code>
- Nast?pnie w NetBeans daj? opcj? Attach debugger...
- Debugger: Using Gdb debugger
- Host: localhost
- Filter: demixer
- Na li?cie pozostaje jeden element i go wybieram
- W polu Executable pojawia si?: /usr/bin/valgrind.bin --vgdb=yes --vgdb-error=0 --track-origins=yes /home/piotrek/NetBeansProjects/Demixer/dist/Debug/GNU-Linux-x86/demixer encode order=63 nodesNumber=10k
- W polu project wybieram: Demixer
- Nast?pnie odpalam i dostaj? komunikat: `: Nie ma takiego pliku ani katalogu.` (tytu? okienka to: Debugger Error).
- Potem tak jakby sesja debuggera by?a aktywna, tzn jest panel typowy dla trybu debugowania, ale nic nie dzia?a opr▒cz przycisku Finish Debugger Session, kt▒ry chyba tylko zamyka okienka w NetBeansie.
- Uda?o si? komu? po??czy? Valgrinda z NetBeansem? Je?li tak to w jaki spos▒b?
- from_unixtime(post_time): 2013-03-17 15:18:05
- *************************** 109. row ***************************
- post_id: 949580
- text_content: Szuka? kto? kawalerki ostatnio w Krakowie i/ lub orientuje si? jakie s? ceny za ca?o?? (tzn najem + czynsz + media + cokolwiek)? :]
- 1500 z? (1200 z? najem + 300 z? reszta) za kawalerk? z balkonem w bloku z 2010 to du?o?
- :)
- from_unixtime(post_time): 2013-05-16 20:15:12
- *************************** 110. row ***************************
- post_id: 965207
- text_content: Troch? n00bskie pytanie, no ale chc? si? upewni?.
- Mam kablowy net z UPC poprzez modem. Nie chc? kupowa? routera tylko zamontowa? w kompie jak?? kart? na PCI-E kt▒ra by pozwoli?a na stworzenie lokalnej sieci WiFi. Czy dowolna karta WiFi wystarczy?
- Nastepne pytania:
- Za?▒?my, ?e mam ju? odpowiedni? kart?. Jak w Windowsie 8 jak i Ubuntu 12.04 ustawi? sprz?t tak by zmostkowa? (dobre s?owo?) kart? Ethernetow? i kart? WiFi? Chcia?bym w dowolnym momencie m▒c sobie wy??cza? i w??cza? sie? WiFi, ale tak by nie mia?o to ?adnego wp?ywu na po??czenie z netem na komputerze pod??czonym przez kabel Ethernet.
- from_unixtime(post_time): 2013-07-23 08:25:08
- *************************** 111. row ***************************
- post_id: 965498
- text_content: Jest ju? niby par? w?tk▒w o polityce, ale ka?dy kojarzy si? z czym? konkretnym, czy to z demokracj?, czy z PO, czy z UE, itp
- Ten w?tek b?dzie og▒lny.
- Na pocz?tek:
- Nowy spos▒b na zwi?kszenie PKB: http://gospodarka.dziennik.pl/news/artykuly/433676,dochody-z-prostytucji-beda-czescia-pkb.html
- from_unixtime(post_time): 2013-07-24 11:54:50
- *************************** 112. row ***************************
- post_id: 966544
- text_content: Top na Linuksie wypluwa mi mi?dzy innymi tak? linijk?: `Tasks: 347 total, 7 running, 336 sleeping, 3 stopped, 1 zombie`
- Tymczasem w prstat stany s? troch? inne: `STATE: the state of the process (cpuN/sleep/wait/run/zombie/stop).`
- Ma kto? pewny pomys? jak to pogodzi??
- from_unixtime(post_time): 2013-07-29 13:57:42
- *************************** 113. row ***************************
- post_id: 969109
- text_content: Niedawno w wyniku chwilowego zaniku wyobra?ni zepsu?em sobie dysk (dok?adniej: chcia?em strzepn?? kurz i pomacha?em gwa?townie dyskiem). Dane na tym dysku s? raczej cenne, ale s? tam te? dane kt▒re s? nie do ko?ca legalne oraz jest pewnie sporo hase? itp
- Jak jest z poufno?ci? danych? Mog? by? pewien, ?e nic mi si? nie stanie? ;]
- A i dodatkowo:
- Jakie firmy z Krakowa polecacie?
- from_unixtime(post_time): 2013-08-12 10:34:10
- *************************** 114. row ***************************
- post_id: 977761
- text_content: Mam kompa z nast?puj?c? konfiguracj?:
- - Windows Vista HP SP2 64-bit,
- - 8 GiB RAM,
- - p?yta Asus P5Q Pro,
- - dysk g?▒wny na SATA WD 1 TB,
- - dwa dyski na IDE, jeden ok 0.5 GB, a drugi ok 1 GB,
- Vista w og▒le nie rozpoznaje tych dysk▒w, nie mog? znale?? absolutnie ?adnego ?ladu o nich w systemie. Natomiast gdy odpal? Ubuntu 12.04.2 64-bit to spokojnie je widz? i z poziomu Ubuntu zgra?em ich zawarto??.
- Problem polega na tym, ?e na jednym z dysk▒w program badblocks wykry? badsektory (w ilo?ci 13) i chcia?bym chocia?by zlokalizowa? pliki kt▒re zosta?y uszkodzone. Pr▒bowa?em z poziomu Ubuntu, ale niekt▒re narz?dzia dawa?y b??dy typu nieprawid?owy startowy blok czy co? w ten dese? (np program debugfs taki b??d zwraca?).
- By? mo?e z poziomu systemu Windows Vista da?oby si? co? zbada?, gdyby tylko ten system wykry? mi te dyski.
- Te dyski s? (oczywi?cie) podpi?te szeregowym kablem ATA, wi?c nie podepn? ich pod jakiekolwiek z??cza SATA.
- Pytanie wi?c brzmi: jak zlokalizowa? pliki, kt▒re s? zapisane na wadliwych sektorach?
- from_unixtime(post_time): 2013-09-30 12:23:11
- *************************** 115. row ***************************
- post_id: 985962
- text_content: Spr▒bowa?em sobie zaprogramowa? liczenie logarytmu naturalnego bez u?ycia sprz?towych funkcji do ich liczenia i mam do?? du?e b??dy. Licz? z rozwini?cia w szereg i o ile wok▒? jedynki mam do?? dobre wyniki to dla liczb troch? odbiegaj?cych od jedynki dok?adno?? mocno spada. Robi? co? ?le, czy mo?e liczenie logarytmu naturalnego w ten spos▒b jest z g▒ry skazane na pora?k??
- <code=java>
- import java.math.BigInteger;
- import static java.math.BigInteger.ONE;
- import static java.math.BigInteger.ZERO;
- import static java.math.BigInteger.valueOf;
- public class Main {
- public static void main(String[] args) {
- int scale = 50;
- for (long x = 1l; x < 2l << scale; x += 1l << scale - 7) {
- System.out.printf("%f %f %f\n",
- x / (double) (1l << scale),
- Math.log(x / (double) (1l << scale)),
- ln(x, scale) / (double) (1l << scale));
- }
- }
- public static long ln(long x, int scale) {
- BigInteger r = ZERO;
- BigInteger f = ONE.shiftLeft(scale).subtract(valueOf(x));
- BigInteger c = ONE.negate().shiftLeft(scale);
- int maxk = 99;
- for (int k = 1; k <= maxk; k++) {
- c = c.multiply(f);
- r = r.multiply(valueOf(k)).shiftLeft(scale).add(c);
- }
- for (int k = 1; k <= maxk; k++) {
- r = r.divide(valueOf(k));
- }
- r = r.shiftRight(maxk * scale);
- return r.longValue();
- }
- }
- </code>
- http://ideone.com/IC7lmg
- from_unixtime(post_time): 2013-11-04 21:34:10
- *************************** 116. row ***************************
- post_id: 985969
- text_content: Poszukuj? jakiego? poradnika krok po kroku jak wydoby? dane ze skompresowanego woluminu DriveSpace. DriveSpace to taki bajer w Windowsie 98, kt▒ry pozwala na zwi?kszenie efektywnej pojemno?ci dysku.
- Problem z DriveSpace jest taki, ?e sterownik jest ?adowany dzi?ki wpisowi w CONFIG.SYS, a DosBox nie obs?uguje tego pliku (tzn nie emuluje jego obs?ugi). No i tu jest problem, bo jestem cienki w te klocki (tzn w zabawy z emulatorami).
- Ma kto? pomys? jak prosto wydoby? te dane?
- from_unixtime(post_time): 2013-11-04 21:54:30
- *************************** 117. row ***************************
- post_id: 1002503
- text_content: Nie wiem czy to si? nadaje na forum :) ale klepi? sobie program do kompresji danych i mam problem bo ?le dekompresuje :p
- Oto kod:
- <code=c>/*
- * chunker.cpp -- a fast experimental compression program
- *
- * Copyright (C) 2013 Piotr Tarsa ( http://github.com/tarsa )
- *
- * This software is provided 'as-is', without any express or implied
- * warranty. In no event will the author be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- * claim that you wrote the original software. If you use this software
- * in a product, an acknowledgment in the product documentation would be
- * appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- * misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- *
- */
- #include <algorithm>
- #include <cassert>
- #include <cstdint>
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #define MAX_BLOCK_SIZE (1 << 20)
- #if MAX_BLOCK_SIZE % 4 != 0
- #error Max block size must contain integral number of chunks
- #endif
- #define FAST_MODE_MARKER 1
- #define GOOD_MODE_MARKER 2
- #define TAG_SIZE_FAST 2
- #define TAG_SIZE_GOOD 3
- #define CHUNKS_PER_SIGNATURE_FAST (32 / TAG_SIZE_FAST)
- #define CHUNKS_PER_SIGNATURE_GOOD (32 / TAG_SIZE_GOOD)
- #define restrict __restrict__
- typedef uint32_t chunk_t;
- typedef struct {
- chunk_t dictionary[1 << 16][2];
- chunk_t predictions[1 << 16];
- chunk_t smallDictionary[1 << 10];
- uint32_t lastHash;
- #ifndef NDEBUG
- bool initialized;
- #endif
- } workset_t;
- int err(char const * const message) {
- fputs(message, stderr);
- fputs("\n", stderr);
- return EXIT_FAILURE;
- }
- size_t fgetd(uint32_t * const value) {
- return fread_unlocked(value, sizeof (uint32_t), 1, stdin);
- }
- size_t fputd(uint32_t const value) {
- return fwrite_unlocked(&value, sizeof (uint32_t), 1, stdout);
- }
- size_t loadBlock(uint8_t * const buffer, size_t const toLoad) {
- size_t bufferLoaded = 0;
- while (bufferLoaded < toLoad && feof_unlocked(stdin) == 0
- && ferror_unlocked(stdin) == 0) {
- size_t const loaded = fread_unlocked(buffer + bufferLoaded,
- sizeof (uint8_t), toLoad - bufferLoaded, stdin);
- bufferLoaded += loaded;
- }
- return bufferLoaded;
- }
- uint32_t hashF(uint32_t const value) {
- return value * 123456791u >> 16;
- }
- uint32_t reduceHash(uint32_t const bigHash) {
- return bigHash >> 6;
- }
- int32_t compressBlockFast(chunk_t const * const inputChunksBuffer,
- int32_t const inputChunksNumber, chunk_t * const signaturesBuffer,
- uint8_t * const codeStreamBuffer, workset_t * const workset) {
- int32_t codeStreamIndex = 0;
- int32_t chunkNumber = 0;
- int32_t signatureNumber = 0;
- while (chunkNumber < inputChunksNumber) {
- chunk_t signature = 0;
- int32_t lastChunkInSlice = std::min(inputChunksNumber,
- chunkNumber + CHUNKS_PER_SIGNATURE_FAST);
- while (chunkNumber < lastChunkInSlice) {
- chunk_t const chunk = inputChunksBuffer[chunkNumber++];
- uint32_t const hash = hashF(chunk);
- chunk_t * const prediction = workset->predictions
- + workset->lastHash;
- uint32_t selector = 3;
- if (*prediction != chunk) {
- chunk_t * const found = workset->dictionary[hash];
- int8_t const equal_0 = found[0] == chunk;
- int8_t const equal_1 = found[1] == chunk;
- int8_t const equal_any = equal_0 || equal_1;
- selector = equal_0 * 2 + equal_1;
- found[1] = found[equal_0];
- found[0] = chunk;
- uint32_t const code = equal_any ? hash : chunk;
- *(uint32_t *) (codeStreamBuffer + codeStreamIndex) = code;
- codeStreamIndex += equal_any ? 2 : 4;
- *prediction = chunk;
- }
- workset->lastHash = hash;
- signature <<= TAG_SIZE_FAST;
- signature |= selector;
- }
- if (chunkNumber == inputChunksNumber) {
- int32_t const tagsInSignature = chunkNumber
- % CHUNKS_PER_SIGNATURE_FAST;
- if (tagsInSignature != 0) {
- for (int32_t i = tagsInSignature; i < CHUNKS_PER_SIGNATURE_FAST;
- i++) {
- signature <<= TAG_SIZE_FAST;
- }
- }
- }
- signaturesBuffer[signatureNumber++] = signature;
- }
- assert(chunkNumber == inputChunksNumber);
- assert(signatureNumber == (inputChunksNumber + CHUNKS_PER_SIGNATURE_FAST
- - 1) / CHUNKS_PER_SIGNATURE_FAST);
- assert(codeStreamIndex >= 0);
- assert(codeStreamIndex <= inputChunksNumber * sizeof (chunk_t));
- return codeStreamIndex;
- }
- int32_t compressBlockGood(chunk_t const * const inputChunksBuffer,
- int32_t const inputChunksNumber, chunk_t * const signaturesBuffer,
- uint8_t * const codeStreamBuffer, workset_t * const workset) {
- int32_t codeStreamIndex = 0;
- int32_t chunkNumber = 0;
- int32_t signatureNumber = 0;
- while (chunkNumber < inputChunksNumber) {
- chunk_t signature = 0;
- int32_t lastChunkInSlice = std::min(inputChunksNumber,
- chunkNumber + CHUNKS_PER_SIGNATURE_GOOD);
- while (chunkNumber < lastChunkInSlice) {
- chunk_t const chunk = inputChunksBuffer[chunkNumber++];
- uint32_t const hash = hashF(chunk);
- chunk_t * const prediction = workset->predictions
- + workset->lastHash;
- uint32_t selector = 7;
- if (*prediction != chunk) {
- uint32_t const hashSmall = reduceHash(hash);
- chunk_t * const foundSmall = workset->smallDictionary
- + hashSmall;
- int8_t const equalSmall = *foundSmall == chunk;
- if (equalSmall) {
- selector = hashSmall >> 8;
- uint8_t const code = hashSmall;
- codeStreamBuffer[codeStreamIndex++] = code;
- } else {
- chunk_t * const found = workset->dictionary[hash];
- int8_t const equal_0 = found[0] == chunk;
- int8_t const equal_1 = found[1] == chunk;
- int8_t const equal_any = equal_0 || equal_1;
- *foundSmall = equal_0 ? chunk : *foundSmall;
- selector = 4 + equal_0 * 2 + equal_1;
- found[1] = found[equal_0];
- found[0] = chunk;
- uint32_t const code = equal_any ? hash : chunk;
- *(uint32_t *) (codeStreamBuffer + codeStreamIndex) = code;
- codeStreamIndex += equal_any ? 2 : 4;
- }
- *prediction = chunk;
- }
- workset->lastHash = hash;
- signature <<= TAG_SIZE_GOOD;
- signature |= selector;
- }
- if (chunkNumber == inputChunksNumber) {
- int32_t const tagsInSignature = chunkNumber
- % CHUNKS_PER_SIGNATURE_GOOD;
- if (tagsInSignature != 0) {
- for (int32_t i = tagsInSignature; i < CHUNKS_PER_SIGNATURE_GOOD;
- i++) {
- signature <<= TAG_SIZE_GOOD;
- }
- }
- }
- signaturesBuffer[signatureNumber++] = signature;
- }
- assert(chunkNumber == inputChunksNumber);
- assert(signatureNumber == (inputChunksNumber + CHUNKS_PER_SIGNATURE_GOOD
- - 1) / CHUNKS_PER_SIGNATURE_GOOD);
- assert(codeStreamIndex >= 0);
- assert(codeStreamIndex <= inputChunksNumber * sizeof (chunk_t));
- return codeStreamIndex;
- }
- int compress(bool const fastMode) {
- fputc_unlocked(fastMode ? FAST_MODE_MARKER : GOOD_MODE_MARKER, stdout);
- uint8_t * const inputBuffer = new uint8_t[MAX_BLOCK_SIZE
- + sizeof (chunk_t)];
- chunk_t * inputChunksBuffers[3] = {nullptr, nullptr, nullptr};
- chunk_t * signaturesBuffers[3] = {nullptr, nullptr, nullptr};
- uint8_t * codeStreamBuffers[3] = {nullptr, nullptr, nullptr};
- workset_t * worksets[3] = {nullptr, nullptr, nullptr};
- uint32_t inputChunksQuantities[3];
- uint32_t signaturesQuantities[3];
- uint32_t codeStreamsLengths[3];
- inputChunksBuffers[0] = (chunk_t *) inputBuffer;
- bool firstBlock = true;
- bool fullBlock;
- do {
- size_t const inputBufferLoaded = loadBlock(inputBuffer, MAX_BLOCK_SIZE);
- fullBlock = inputBufferLoaded == MAX_BLOCK_SIZE;
- bool const onlyBlock = firstBlock && !fullBlock;
- int32_t const iterations = fastMode ? 2 : 3;
- for (int32_t iteration = 1; iteration <= iterations; iteration++) {
- if (iteration == 1) {
- inputChunksQuantities[0] = (inputBufferLoaded + sizeof (chunk_t)
- - 1) / sizeof (chunk_t);
- } else {
- uint32_t const chunksPerSignature = (iteration != 2 || fastMode)
- ? CHUNKS_PER_SIGNATURE_FAST : CHUNKS_PER_SIGNATURE_GOOD;
- inputChunksQuantities[iteration - 1] =
- (inputChunksQuantities[iteration - 2]
- + chunksPerSignature - 1) / chunksPerSignature;
- }
- {
- uint32_t const chunksPerSignature = (iteration != 1 || fastMode)
- ? CHUNKS_PER_SIGNATURE_FAST : CHUNKS_PER_SIGNATURE_GOOD;
- signaturesQuantities[iteration - 1] =
- (inputChunksQuantities[iteration - 1]
- + chunksPerSignature - 1) / chunksPerSignature;
- }
- if (firstBlock) {
- if (iteration > 1) {
- inputChunksBuffers[iteration - 1] =
- signaturesBuffers[iteration - 2];
- }
- signaturesBuffers[iteration - 1] =
- new chunk_t[signaturesQuantities[iteration - 1]];
- codeStreamBuffers[iteration - 1] =
- new uint8_t[(inputChunksQuantities[iteration - 1] + 1)
- * sizeof (chunk_t)];
- if (onlyBlock && iteration > 1) {
- worksets[iteration - 1] = worksets[iteration - 2];
- } else {
- worksets[iteration - 1] = new workset_t;
- }
- workset_t * const workset = worksets[iteration - 1];
- memset(workset->dictionary, 0, sizeof (workset->dictionary));
- memset(workset->predictions, 0, sizeof (workset->predictions));
- memset(workset->smallDictionary, 0,
- sizeof (workset->smallDictionary));
- workset->lastHash = 0;
- #ifndef NDEBUG
- workset->initialized = true;
- #endif
- }
- #ifndef NDEBUG
- assert(worksets[iteration - 1]->initialized);
- #endif
- codeStreamsLengths[iteration - 1] = (iteration != 1 || fastMode)
- ? compressBlockFast(inputChunksBuffers[iteration - 1],
- inputChunksQuantities[iteration - 1],
- signaturesBuffers[iteration - 1],
- codeStreamBuffers[iteration - 1], worksets[iteration - 1])
- : compressBlockGood(inputChunksBuffers[iteration - 1],
- inputChunksQuantities[iteration - 1],
- signaturesBuffers[iteration - 1],
- codeStreamBuffers[iteration - 1], worksets[iteration - 1]);
- }
- int32_t bestNumberOfIterations = 0;
- {
- uint32_t bestTotalSize = inputChunksQuantities[0]
- * sizeof (chunk_t);
- for (int32_t iteration = 1; iteration <= iterations; iteration++) {
- uint32_t totalSize = signaturesQuantities[iteration - 1]
- * sizeof (chunk_t);
- for (int32_t iteration2 = 1; iteration2 <= iteration;
- iteration2++) {
- totalSize += codeStreamsLengths[iteration2 - 1];
- }
- if (totalSize < bestTotalSize) {
- bestNumberOfIterations = iteration;
- bestTotalSize = totalSize;
- }
- }
- }
- fputc_unlocked(bestNumberOfIterations, stdout);
- fputd(inputChunksQuantities[0]);
- if (bestNumberOfIterations == 0) {
- fwrite_unlocked(inputChunksBuffers[0], sizeof (chunk_t),
- inputChunksQuantities[0], stdout);
- } else {
- fwrite_unlocked(signaturesBuffers[bestNumberOfIterations - 1],
- sizeof (chunk_t), signaturesQuantities[
- bestNumberOfIterations - 1], stdout);
- for (int32_t iteration = bestNumberOfIterations; iteration >= 1;
- iteration--) {
- fputd(codeStreamsLengths[iteration - 1]);
- fwrite_unlocked(codeStreamBuffers[iteration - 1],
- sizeof (uint8_t), codeStreamsLengths[iteration - 1],
- stdout);
- }
- }
- if (!fullBlock) {
- size_t const remainingsLength = inputBufferLoaded
- % sizeof (chunk_t);
- fputc_unlocked(remainingsLength, stdout);
- fwrite_unlocked(inputBuffer + inputBufferLoaded - remainingsLength,
- sizeof (uint8_t), remainingsLength, stdout);
- }
- firstBlock = false;
- } while (fullBlock);
- return EXIT_SUCCESS;
- }
- int32_t decompressBlockFast(chunk_t const * const signaturesBuffer,
- uint8_t const * const codeStreamBuffer, workset_t * const workset,
- chunk_t * const outputChunksBuffer, int32_t const outputChunksNumber) {
- int32_t codeStreamIndex = 0;
- int32_t chunkNumber = 0;
- int32_t signatureNumber = 0;
- while (chunkNumber < outputChunksNumber) {
- chunk_t signature = signaturesBuffer[signatureNumber++];
- int32_t lastChunkInSlice = std::min(outputChunksNumber,
- chunkNumber + CHUNKS_PER_SIGNATURE_FAST);
- while (chunkNumber < lastChunkInSlice) {
- uint32_t const selector = signature >> 30;
- if (selector == 3) {
- chunk_t const chunk = workset->predictions[workset->lastHash];
- outputChunksBuffer[chunkNumber++] = chunk;
- workset->lastHash = hashF(chunk);
- } else if (selector) {
- uint32_t const hash = *(uint16_t*) (codeStreamBuffer
- + codeStreamIndex);
- codeStreamIndex += 2;
- chunk_t * const found = workset->dictionary[hash];
- chunk_t const chunk = found[selector & 1];
- uint8_t const equal_0 = selector >> 1;
- found[1] = found[equal_0];
- found[0] = chunk;
- outputChunksBuffer[chunkNumber++] = chunk;
- workset->predictions[workset->lastHash] = chunk;
- workset->lastHash = hash;
- } else {
- chunk_t const chunk = *(chunk_t*) (codeStreamBuffer
- + codeStreamIndex);
- codeStreamIndex += 4;
- outputChunksBuffer[chunkNumber++] = chunk;
- uint32_t const hash = hashF(chunk);
- chunk_t * const found = workset->dictionary[hash];
- found[1] = found[0];
- found[0] = chunk;
- workset->predictions[workset->lastHash] = chunk;
- workset->lastHash = hash;
- }
- signature <<= 2;
- }
- }
- assert(chunkNumber == outputChunksNumber);
- assert(signatureNumber == (outputChunksNumber + CHUNKS_PER_SIGNATURE_FAST
- - 1) / CHUNKS_PER_SIGNATURE_FAST);
- assert(codeStreamIndex >= 0);
- assert(codeStreamIndex <= outputChunksNumber * sizeof (chunk_t));
- return codeStreamIndex;
- }
- int32_t decompressBlockGood(chunk_t const * const signaturesBuffer,
- uint8_t const * const codeStreamBuffer, workset_t * const workset,
- chunk_t * const outputChunksBuffer, int32_t const outputChunksNumber) {
- int32_t codeStreamIndex = 0;
- int32_t chunkNumber = 0;
- int32_t signatureNumber = 0;
- while (chunkNumber < outputChunksNumber) {
- chunk_t signature = signaturesBuffer[signatureNumber++] << 2;
- int32_t lastChunkInSlice = std::min(outputChunksNumber,
- chunkNumber + CHUNKS_PER_SIGNATURE_GOOD);
- while (chunkNumber < lastChunkInSlice) {
- uint32_t const selector = signature >> 29;
- if (selector == 7) {
- chunk_t const chunk = workset->predictions[workset->lastHash];
- outputChunksBuffer[chunkNumber++] = chunk;
- workset->lastHash = hashF(chunk);
- } else if (selector < 4) {
- uint32_t const hashSmall = (selector << 8)
- | codeStreamBuffer[codeStreamIndex];
- codeStreamIndex++;
- chunk_t const chunk = workset->smallDictionary[hashSmall];
- outputChunksBuffer[chunkNumber++] = chunk;
- workset->predictions[workset->lastHash] = chunk;
- workset->lastHash = hashF(chunk);
- } else if (selector & 3) {
- uint32_t const hash = *(uint16_t*) (codeStreamBuffer
- + codeStreamIndex);
- codeStreamIndex += 2;
- chunk_t * const found = workset->dictionary[hash];
- chunk_t const chunk = found[selector & 1];
- uint8_t const equal_0 = !(selector & 1);
- found[1] = found[equal_0];
- found[0] = chunk;
- uint32_t const hashSmall = reduceHash(hash);
- workset->smallDictionary[hashSmall] = equal_0 ? chunk
- : workset->smallDictionary[hashSmall];
- outputChunksBuffer[chunkNumber++] = chunk;
- workset->predictions[workset->lastHash] = chunk;
- workset->lastHash = hash;
- } else {
- chunk_t const chunk = *(chunk_t*) (codeStreamBuffer
- + codeStreamIndex);
- codeStreamIndex += 4;
- outputChunksBuffer[chunkNumber++] = chunk;
- uint32_t const hash = hashF(chunk);
- chunk_t * const found = workset->dictionary[hash];
- found[1] = found[0];
- found[0] = chunk;
- workset->predictions[workset->lastHash] = chunk;
- workset->lastHash = hash;
- }
- signature <<= 3;
- }
- }
- assert(chunkNumber == outputChunksNumber);
- assert(signatureNumber == (outputChunksNumber + CHUNKS_PER_SIGNATURE_GOOD
- - 1) / CHUNKS_PER_SIGNATURE_GOOD);
- assert(codeStreamIndex >= 0);
- assert(codeStreamIndex <= outputChunksNumber * sizeof (chunk_t));
- return codeStreamIndex;
- }
- int decompress() {
- int32_t const modeMarker = fgetc_unlocked(stdin);
- if (modeMarker != FAST_MODE_MARKER && modeMarker != GOOD_MODE_MARKER) {
- return err("Invalid mode marker.");
- }
- bool const fastMode = modeMarker == FAST_MODE_MARKER;
- uint8_t * const outputBuffer = new uint8_t[MAX_BLOCK_SIZE
- + sizeof (chunk_t)];
- chunk_t * outputChunksBuffers[3] = {nullptr, nullptr, nullptr};
- chunk_t * signaturesBuffers[3] = {nullptr, nullptr, nullptr};
- uint8_t * codeStreamBuffers[3] = {nullptr, nullptr, nullptr};
- workset_t * worksets[3] = {nullptr, nullptr, nullptr};
- uint32_t outputChunksQuantities[3];
- uint32_t signaturesQuantities[3];
- uint32_t codeStreamsLengths[3];
- outputChunksBuffers[0] = (chunk_t *) outputBuffer;
- bool firstBlock = true;
- bool fullBlock;
- do {
- int32_t const maxIterations = fastMode ? 2 : 3;
- int32_t const iterations = fgetc_unlocked(stdin);
- assert(iterations >= 0);
- assert(iterations <= maxIterations);
- //fprintf(stderr, "%d\n", iterations);
- fgetd(outputChunksQuantities + 0);
- fullBlock = outputChunksQuantities[0] * sizeof (chunk_t)
- == MAX_BLOCK_SIZE;
- bool const onlyBlock = firstBlock && !fullBlock;
- if (!fullBlock && iterations == 0) {
- loadBlock((uint8_t*) outputChunksBuffers[0],
- outputChunksQuantities[0] * sizeof (chunk_t));
- } else {
- for (int32_t iteration = 1; iteration <= maxIterations;
- iteration++) {
- if (iteration > 1) {
- uint32_t const chunksPerSignature = (iteration != 2
- || fastMode) ? CHUNKS_PER_SIGNATURE_FAST
- : CHUNKS_PER_SIGNATURE_GOOD;
- outputChunksQuantities[iteration - 1] =
- (outputChunksQuantities[iteration - 2]
- + chunksPerSignature - 1) / chunksPerSignature;
- }
- {
- uint32_t const chunksPerSignature = (iteration != 1
- || fastMode) ? CHUNKS_PER_SIGNATURE_FAST
- : CHUNKS_PER_SIGNATURE_GOOD;
- signaturesQuantities[iteration - 1] =
- (outputChunksQuantities[iteration - 1]
- + chunksPerSignature - 1) / chunksPerSignature;
- }
- }
- if (firstBlock) {
- int32_t const allocatedIterations = fullBlock
- ? maxIterations : iterations;
- for (int32_t iteration = 1; iteration <= allocatedIterations;
- iteration++) {
- if (iteration > 1) {
- outputChunksBuffers[iteration - 1] =
- signaturesBuffers[iteration - 2];
- }
- signaturesBuffers[iteration - 1] =
- new chunk_t[signaturesQuantities[iteration - 1]];
- codeStreamBuffers[iteration - 1] =
- new uint8_t[(outputChunksQuantities[iteration - 1]
- + 1) * sizeof (chunk_t)];
- if (onlyBlock && iteration > 1) {
- worksets[iteration - 1] = worksets[iteration - 2];
- } else {
- worksets[iteration - 1] = new workset_t;
- }
- #ifndef NDEBUG
- worksets[iteration - 1]->initialized = false;
- #endif
- }
- }
- if (iterations == 0) {
- fread_unlocked(outputChunksBuffers[0], sizeof (chunk_t),
- outputChunksQuantities[0], stdin);
- } else {
- for (int32_t iteration = iterations; iteration >= 1;
- iteration--) {
- if (iteration == iterations) {
- fread_unlocked(signaturesBuffers[iteration - 1],
- sizeof (chunk_t),
- signaturesQuantities[iteration - 1], stdin);
- }
- fgetd(codeStreamsLengths + iteration - 1);
- fread_unlocked(codeStreamBuffers[iteration - 1],
- sizeof (uint8_t), codeStreamsLengths[iteration - 1],
- stdin);
- if (firstBlock) {
- workset_t * const workset = worksets[iteration - 1];
- memset(workset->dictionary, 0,
- sizeof (workset->dictionary));
- memset(workset->predictions, 0,
- sizeof (workset->predictions));
- memset(workset->smallDictionary, 0,
- sizeof (workset->smallDictionary));
- workset->lastHash = 0;
- #ifndef NDEBUG
- workset->initialized = true;
- #endif
- }
- int32_t decodedCodeStreamLength;
- #ifndef NDEBUG
- assert(worksets[iteration - 1]->initialized);
- #endif
- if (iteration != 1 || fastMode) {
- decodedCodeStreamLength = decompressBlockFast(
- signaturesBuffers[iteration - 1],
- codeStreamBuffers[iteration - 1],
- worksets[iteration - 1],
- outputChunksBuffers[iteration - 1],
- outputChunksQuantities[iteration - 1]);
- } else {
- decodedCodeStreamLength = decompressBlockGood(
- signaturesBuffers[iteration - 1],
- codeStreamBuffers[iteration - 1],
- worksets[iteration - 1],
- outputChunksBuffers[iteration - 1],
- outputChunksQuantities[iteration - 1]);
- }
- if (decodedCodeStreamLength
- != codeStreamsLengths[iteration - 1]) {
- fprintf(stderr, "%d %d\n", decodedCodeStreamLength,
- codeStreamsLengths[iteration - 1]);
- }
- assert(decodedCodeStreamLength
- == codeStreamsLengths[iteration - 1]);
- }
- }
- if (fullBlock) {
- for (int32_t iteration = iterations + 1; iteration
- <= maxIterations; iteration++) {
- if (firstBlock) {
- workset_t * const workset = worksets[iteration - 1];
- memset(workset->dictionary, 0,
- sizeof (workset->dictionary));
- memset(workset->predictions, 0,
- sizeof (workset->predictions));
- memset(workset->smallDictionary, 0,
- sizeof (workset->smallDictionary));
- workset->lastHash = 0;
- #ifndef NDEBUG
- workset->initialized = true;
- #endif
- }
- #ifndef NDEBUG
- assert(worksets[iteration - 1]->initialized);
- #endif
- if (iteration != 1 || fastMode) {
- compressBlockFast(outputChunksBuffers[iteration - 1],
- outputChunksQuantities[iteration - 1],
- signaturesBuffers[iteration - 1],
- codeStreamBuffers[iteration - 1],
- worksets[iteration - 1]);
- } else {
- compressBlockGood(outputChunksBuffers[iteration - 1],
- outputChunksQuantities[iteration - 1],
- signaturesBuffers[iteration - 1],
- codeStreamBuffers[iteration - 1],
- worksets[iteration - 1]);
- }
- }
- }
- }
- fwrite_unlocked(outputChunksBuffers[0], sizeof (chunk_t),
- outputChunksQuantities[0], stdout);
- if (!fullBlock) {
- size_t const remainingsLength = fgetc(stdin);
- uint8_t smallBuffer[4];
- fread_unlocked(smallBuffer, sizeof (uint8_t), remainingsLength,
- stdin);
- fwrite_unlocked(smallBuffer, sizeof (uint8_t), remainingsLength,
- stdout);
- }
- firstBlock = false;
- } while (fullBlock);
- return EXIT_SUCCESS;
- }
- int main(int const argc, char const * const * const argv) {
- err("Chunker -- fast compression utility");
- err("Author: Piotr Tarsa ( http://github.com/tarsa )");
- err("Release date: January, 2013");
- err("");
- if (argc != 2 || (strcmp(argv[1], "cf") != 0 && strcmp(argv[1], "cx") != 0
- && strcmp(argv[1], "d") != 0)) {
- err("Usage: <program name> [cf|cx|d] < input > output");
- return EXIT_FAILURE;
- }
- int result;
- if (strcmp(argv[1], "d") == 0) {
- result = decompress();
- } else {
- result = compress(strcmp(argv[1], "cf") == 0);
- }
- err("Done.");
- return result;
- }
- </code>
- Szkopu? w tym, ?e jak wy??cz? "rekurencyjn?" kompresj? sygnatur, podmieniaj?c w metodzie compress linijk?:
- <code>int32_t const iterations = fastMode ? 2 : 3;</code>
- na:
- <code>int32_t const iterations = fastMode ? 1 : 1;</code>
- To wtedy hula.
- Pr▒bowa?em dzia?a? Valgrindem i nie wykry? ?adnych problem▒w. Doda?em troch? assert▒w i pu?ci?em - one te? generalnie nie pomog?y wiele, bo dostaj? tylko ?e (przy pr▒bie na pliku enwik9 st?d: http://mattmahoney.net/dc/textdata.html ):
- <code>chunker: chunker.cpp:588: int decompress(): Assertion `decodedCodeStreamLength == codeStreamsLengths[iteration - 1]' failed.</code>
- Kod mam zamiar opublikowa?. Jak kto? znajdzie buga to w nagrod? dam mu creditsa, tzn napisz? w komentarzu u g▒ry kodu, ?e znalaz? buga :)
- Kompresja dzia?a w taki spos▒b, ?e strumie? jest dzielony na bloki. Dla ka?dego bloku po kompresji powstaj? dwa bloki wyj?ciowe: blok sygnatur i blok innych danych (w kodzie nazwany codeStream). Je?li iterations jest wi?ksze od 1 to blok sygnatur jest kompresowany rekurencyjnie. I w?a?nie ta kompresja rekurencyjna nie dzia?a dobrze.
- Jak algorytm dzia?a na niskim poziomie? Dane s? dzielone na 4-bajtowe kawa?ki, nast?pnie hashowane. Jest jeden lub dwa s?owniki wielopoziomowe (tzn dla danego hasha jest ca?y zbi▒r element▒w w s?owniku) oraz tablica predykcji kawa?k▒w (kt▒ra podaje po prostu nast?pny kawa?ek z poprzedniego wyst?pienia aktualnie przerabianego kawa?ka). Sygnatura sk?ada si? z tag▒w, gdzie ka?dy tag odpowiada jednemu kawa?kowi i opisuje czy kawa?ek zosta? znaleziony w s?owniku (a je?li tak to w kt▒rym s?owniku i kt▒rym elemencie w zbiorze), tabeli predykcji albo nigdzie (brak kompresji). Do bloku codeStream id? zar▒wno dane nieskompresowane jak i hashe (ma?e i du?e).
- Mo?e jest tu jaki? trywialny b??d kt▒rego nie zauwa?y?em. Albo mo?e kto? ma pomys? jak by go szybko znale???
- from_unixtime(post_time): 2014-01-09 19:31:54
- *************************** 118. row ***************************
- post_id: 1003506
- text_content: W czym pisa? CV? Jakie s? wady i zalety poszczeg▒lnych rozwi?za? (do g?owy przychodz? mi dwa - LaTeX lub Word, przy czym do pierwszego mo?na podej?? na wiele sposob▒w)? Kiedy warto wybra? konkretne rozwi?zanie (uwzgl?dniaj?c np czas)? Gdzie mo?na znale?? przyzwoite gotowe szablony, ?eby szybko z?o?y? CV?
- Co napisa? w CV? Na co pracodawcy zwracaj? uwag? i ceni? to, a co jest zwyk?ym rozpraszaczem albo wr?cz obni?a ocen? w oczach pracodawcy?
- from_unixtime(post_time): 2014-01-13 14:12:38
- *************************** 119. row ***************************
- post_id: 1013256
- text_content: Nie ma podforum dla zagadek wi?c wrzucam tutaj.
- Problem w kt▒rym mamy 8 kulek i jedn? kulk? ci??sz? (b?d? l?ejsz?) jest powszechnie znany w Googlu :P
- Natomiast ci??ko mi znale?? rozwi?zanie dla wariantu gdzie jest 8 kulek i jedna wa?y mniej lub wi?cej, tzn nie wiadomo w kt▒r? stron? jest r▒?nica. Mi wysz?o ?e 3 wa?enia wystarcz? by wykry? t? kulk? wraz z informacj? czy jest l?ejsza czy ci??sza.
- Pytanie g?▒wne natomiast jest takie: jaka jest z?o?ono?? problemu (tego trudniejszego), tzn dla X kulek jaka jest minimalna liczba wa?e? by wykry? kulk? o odstaj?cej wadze?
- Dla problemu gdzie wiemy czy kulka jest ci??sza czy l?ejsza wydaje mi si?, ?e minimalna liczba krok▒w to sufit(log_3(x)). Pytanie jaka jest liczba krok▒w dla trudniejszego wariantu (tzn nie wiemy czy odstaj?ca kulka jest ci??sza czy l?ejsza)?
- from_unixtime(post_time): 2014-02-19 01:07:00
- *************************** 120. row ***************************
- post_id: 1014190
- text_content: Kontynuuj?c questa z now? prac? napotka?em kolejne w?tpliwo?ci :P
- G?▒wny problem: jak? form? zatrudnienia wybra??
- Oto co zrozumia?em z neta w przypadku pracy programisty (czyli tutaj jest chyba ta mo?liwo?? wyboru 50% koszt▒w uzyskania przychodu):
- Przy samozatrudnieniu trzeba odprowadza? VAT (?), a tak?e sk?adki ZUSowskie, kt▒re przez pierwsze dwa lata s? ni?sze ni? p▒?niej oraz podatek dochodowy. ?eby si? op?aca?o to chyba trzeba kombinowa? z wliczaniem zakup▒w w koszty, wtedy podatek dochodowy si? zmniejsza. Trzeba te? zleci? komu? prowadzenie ksi?gowo?ci.
- Przy umowie o dzie?o jest 9% podatek + sk?adki ZUSowskie. Czy te sk?adki s? obowi?zkowe? W jakiej wysoko?ci? Czy te? jest zni?ka jak przy dzia?alno?ci gospodarczej?
- Umowy zlecenie s? chyba dzisiaj osk?adkowane ca?kowicie i nie ma du?ych oszcz?dno?ci vs praca na etat. Natomiast odpada urlop, a urlop dla etatowc▒w to jakie? 10% czasu pracy.
- Odk?adanie na pa?stwow? emerytur? mnie (przynajmniej na razie) nie interesuje, tzn to bym obci?? tak mocno jak tylko mo?liwe. Interesuj? mnie za to pozosta?e sk?adki - czy w jakiejkolwiek formie zatrudnienia jest tak, ?e np ma si? utrudniony lub uniemo?liwiony dost?p do opieki medycznej, renty, wynagrodzenia chorobowego, itd? Je?li tak to w jakim stopniu?
- Jakie s? wielko?ci sk?adek i podatk▒w w przypadku samozatrudnienia a jakie w przypadku umowy o dzie?o?
- Kolejny problem to czy obni?ony ZUS da si? przenie?? przy zmianie formy zatrudnienia? Tzn za?▒?my, ?e wybieram umow? o dzie?o jako osoba fizyczna (chyba tak to si? okre?la) i p?ac? obni?one sk?adki ZUS (trzeba? mo?na?), a nast?pnie przechodz? na dzia?alno?? gospodarcz?, bo np mam zlecenie lub chc? co? sprzedawa? jako firma. Czy dalej mog? p?aci? obni?ony ZUS?
- Mo?e troch? g?upie pytanie ale nie jestem pewien na 100%: czy mi?dzy dzia?alno?ci? gospodarcz?, a firm?/ przedsi?biorstwem jest jaka? r▒?nica czy mo?e to synonimy?
- Ponadto wyczyta?em ?e w przypadku niekt▒rych um▒w odpowiada si? za ewentualne szkody ca?ym swoim maj?tkiem. W kt▒rych?
- from_unixtime(post_time): 2014-02-22 22:24:05
- *************************** 121. row ***************************
- post_id: 1049828
- text_content: Jestem sobie postem....
- from_unixtime(post_time): 2014-07-15 15:28:23
- *************************** 122. row ***************************
- post_id: 1051493
- text_content: Skoro ju? Coyote czerpie pe?nymi gar?ciami ze StackExchange :] to mo?na by i wprowadzi? funkcj? oznaczania duplikat▒w przez dobrze wypunktowanych u?ytkownik▒w (w sensie z boku w?tku pokaza? list? w?tk▒w o tym samym). Sporo temat▒w si? duplikuje, a automatycznie nie ma jak tego sprawdzi?. Wstawianie w ?rodek w?tku posta informacji, ?e w?tek jest zduplikowany powoduje, ?e duplikacja nie jest oczywista dla mniej uwa?nego czytelnika.
- from_unixtime(post_time): 2014-07-23 08:01:33
- *************************** 123. row ***************************
- post_id: 1055503
- text_content: Jak w temacie. Przez to ?e ikonka jest po prawej stronie (daleko od zak?adek), czasem nie zauwa?am ?e jej nie mam i np loguj? si? na FB bez trybu incognito :P
- Ewentualnie wystarczy?by jaki? inny spos▒b na wyr▒?nienie trybu incognito, bo sk▒rk? mam tak? sam? z incognito i bez.
- from_unixtime(post_time): 2014-08-10 14:23:58
- *************************** 124. row ***************************
- post_id: 1058546
- text_content: Mam ochot? na ortokorekcj? (bo coraz bardziej ?lepn?), ale szukaj?c po necie nie mog? znale?? nic w Krakowie.
- Czy kto? na tym forum korzysta z soczewek ortokorekcyjnych? :) Jakie s? wra?enia?
- Zna kto? jaki? gabinet w Krk lub okolicach i mo?e poleci? (opisa?)?
- from_unixtime(post_time): 2014-08-23 18:58:43
- *************************** 125. row ***************************
- post_id: 1077467
- text_content: Oficjalnie.
- CEO powiedzia?, ?e jest homo.
- from_unixtime(post_time): 2014-10-31 08:50:59
- *************************** 126. row ***************************
- post_id: 1079781
- text_content: Nagranie z monitoringu: https://www.youtube.com/watch?v=TBJldvf6jEU
- from_unixtime(post_time): 2014-11-06 21:50:43
- *************************** 127. row ***************************
- post_id: 1099860
- text_content: Wiem jak to przet?umaczy? dos?ownie, ale mam silne przeczucie, ?e kiedy? zna?em idiom kt▒ry znaczy? dok?adnie to samo, chocia? nie m▒wi? nic o jab?kach czy pomara?czach. Kto?▒ma jaki? pomys??
- from_unixtime(post_time): 2015-01-08 20:01:41
- *************************** 128. row ***************************
- post_id: 1106790
- text_content: Nowa wersja Tridenta od Microsoftu podszywa si?▒pod Google Chrome: http://pclab.pl/news61625.html
- Kabaret z User-Agentami w?a?nie wszed? na nowy poziom absurdu. Mo?e nied?ugo b?d? Service Packi z nowymi zestawami User-Agent▒w?
- Ciekawe czy frontendowcy si? uciesz?? :P
- from_unixtime(post_time): 2015-01-26 08:47:13
- 128 rows in set (0.00 sec)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement