quarta-feira, 9 de dezembro de 2009

8 na potencia 15000 (8^15000)

Brincando com uns algoritmos, calculei o numero 8 elevado na potencia 15000.

Como se pode ver abaixo, o numero é beeeeem grande:

[começa aqui]
223771554658439779138939016305
86894857616520978421454498970966155726052667229733134922986368060090490454626321235535182998290736034686244108234813671695383270719919302368694055521563376397053908105653421337368338198168412883455559067177310723301998319699359284695885329663507667647209988419112653799672464101706347141859567527886099482750080865783679325103909646765137724203923894130437094915419404148255134945751594155979731755402993392850716349303466439317261517766641035156268155988892046130583388291566498854721147394770167510614034128113039269127285537567528415718803736287788429267958512158937492437337658054048653930636926282201141151356534222971626408170892799310405886477500520281679206712359648322341867462070380874149140820458552245168287670488400616079583118821549456973534975249519512919268816397133340353513635560796394715808758492877781262127802454369727419489219791269280432657687344280843808006611978323166422434662062682256827446473590071035814975315970867689160769424998285018459424178096686187712065341860377193665536380790319275948133027723193448079437029028650933934735708845823225134084179693094396615043416253865696755812122233146692575015212637414553764629429319601164818674716936111798665772092214870707290833721469543508709344134833579580543905906398906969811614124461102097257876502226066233236136190786883505676204205807483152920205607096617039329196101456030639295011508673497512418797510560960226577407466246978064413221541594250772747180289866753522230104300975226174057050835448733029837190140854917178931406363838097875367495883117163840642603158251051832797667050327783191364228296622616149386789223174815038146041898809923265436410640566952245551424468940775903251913035214597891353613055122769960353247063535186837954494854300783197499008471877815635686502205211218267476138524849028251395169281491701864257606709285310346117801498486374184104362422718154171482623509831678734310034307557615556742268327940264551728226803236223180981287955702740547290898411438478118172111648533854022159130958597715195269013222243267207023109063265247051282801343132980420633626326819783506561194539507584421968734936582409582880576267943489076043084746615506030548935102178283087302151152240472227678191154147609022830689140593538324622583844350042836875768478044021993450659351018412463496383983689683995990129756268185881335050313599050015320833786514070127763696989841227044572729627007708175773103596455068879731840292501053374330282960363208088819740856552984483875322557195900834119401362363971653042916541249467548391206941481609001841031405269168758820291810564156512928875339124267002344441529566858147149364397793452380632292492306382066580754345362296228790297552126678131372638517689718423809793848441580226438988995074179647155224268021551996912203604453413909908937548219358776998179867798719051318133980576487847931569833951380116913815309325763051801581398236747645794748207986304058794742994554158428070961586546314227467192645214698249126395647252749966614621414899441298999322841988118141601451683725390203934909511082331617572071494270840350403020012190334950098772280607014589579679693274980283678255543155466920213706625087910105027291429235255019741075453033188950160434967786961095106688551436905691072536110426876031207224856586749767607504495809230481411419089976197583282428068909327992246751429006427807063344533221168004212618538422151678660720043355385397351335597588762663866335601186262402111314675858799382677350453388996058834283242808206215273469663122718688124539192398350639871119770796697444378693352653277886214977332121029813248286777489730273826711750120978078992567681884203017496466096714747212599133768737929932344799711847392738561050179833468612509193174417170084709695172702927589616670032175379912054959509171397443222768904272034021409845043339747424384030787672818151593633075956066334094429504970056266315097879424729195701429315020433023009053477771795588091409400848875302699260754558292449250780056144080765025233846573274724750705677172662571386121690130691558590923567267742349334046335630059592985331817428390358643261360152682116721281229452680435360591780801523539374110343878635734002452840069527856986137758678571809276887555525346398179932847315203656699925483668483941157668179598489225004446329859215399429011208694762411591563062027797010059122673163492923127794883641758126074957189805220894339013112327565405279624343227064755563263980012684464062680085154402806906424006624665685327680431083137482525945996577825454885192960824802008312573831571159288403539967292368085516861946806204936846002429936292633163502563555336503407604267166470722203115804231971380178924663430416238901576414658285258269304571297919309629456266119497081731117862864348095685680971048658996954747606055668174343717874818072855337372857696026745416868879061177841374469067343751385413962031731614571901933675841507208899703470775388881922999722244066207045546919573275132487090891966943773535984042759339607595362362994777897771618622985738745987143892527682977150578782287271421495248787942275855674001015866199458262992721494550583433191512312178581373192187101247402493348613449211112168633685342362435458421536946373849173567895023008603533299773417052418835068462192356282689490507270160664073141865410097894710107051040360570167113435238728677578928900230283643551137402584835998859374525454138163950427114414878670543008785755905826813728216423797080136835547857010611660515359686175993379586953584891690858346561410271369956529259798668665016659757116578236259505220669818916878461754982386214198985895508475182342384289726514762358262598438115894540583839130205367866847169896154797519707555251221989466601136485641894296956764570419623803925920402733367515403623344770980847037350211550494418953823043539100868552792407078888501043327048361352482833096471464870168756079526295957991725357940639271812000413536366712201945099512612968297784732660239434851335631039994721782025860088858979678604038180945116398804436159563529611178705760951825220360229240855388819672188796541756583007267508302600494845133463744620861226648030413569756865168725939942769027310272669856310914472496445855349233519358172899071633448929763520411907235710721743240537855902238403838507627905206640749183286382487570662425115435126524338973081603999603091097112629817790431947077698557600040048502247857572866705854946219072350986786334215499795284716039286946690557902804637672057589737032876744838860627508473767087829455581131378888034625627304911281081993426709057369991078644239768786840815554704822884887264703295007786811359657282717782293551326460763543534466507525774001825511297273687180973387193813932302063402651309166690143200273176710147259638102671417107664247105597678402214379763564075124330991954735540463343720478504677464179182190414762392363882835965112591234527738170836377030460860695408418957872770641552567302691787668229998546624945259472143794121254056813065603113583510923875741967308901024665423321355661413181145818199840034217157708329685775698395936108663547316465775566922522176249561565054205830210961253161387766364532804848405162483211832103617969030829680767846753661164565812620436687254145184098213271108628442384727165474246576987856235154788649584828091337935312437958248714018942481353872282754536934749391878017713896345257073687223354252190606441195083385419245584463617505058490461871982178425672673940279178670244396188026227166568711069596441512714581966404544068245461886861684433056047694509232363328870197281183634227309109058753462051927965633754596344695502477284094502443376535264451577003123855799957004274426219424775556913931016640693548103005710666141013090918304365230833521362285370289436844776322663434516920172908803098440462579519805264806139821433598994651054107209211099911980282197264824254941516199649293692585965276912130430384139803527922580386809515364725611951697593493862543395927071038760180658215945465888140158934280556554054791574655349993644529666768471731622938378373991702685548439997044203556495868267137994021572373272970736460148414284563228296887829757583665703879851468343224057702192671663744112545994159111624758893208576883630704198706674430907482155270320083530003130039460360158640632368674817695537579204346282082275607210259811187211856655455126342452753436876726070691115439328807213162717030652184872922088730855578600039298484530203572292841848143243126561133136657319947498596002525832561393576848433055588630900818542134498054709765048867333045936257406974280471011765098766017908308972662054406562796213025225274711300399322057782707545989760789228200100133922040264901764434870124544231313354434710361235071883668602619785410065814505206632625507283780203426720320845725980443255356290361675982013338822383059908015323134649072630945087357360628462865618890663556169061062403004604603818537218623283654167216149376389379837857443246469948477985304043879723160269035319050288831373228132520099583535568864359696924021209715420869021299662397439695965188788046706646527632206961408085706424382634630532054618375188211460107229625736613040574969515848104375644670909917493504799278434877749988081136994593765198743412132386030068974190966632899919776573166759944075430163805968917126251158083500684428034124567326940365564009629253893555544457609081411082619314491422365706132598442952544596425204533440813668437022195468275149634509276724062545260537630651311813137483756301583000011644123904995030364944858374512662706082204220146724767124845255328615627498623822047236915079494838343466411650933788491023117929808696125235704184725364368093668796084390899881361157255624803783896334115270870219051253755875185879612945617054261030282426666035488254712094973407120106082224707464102246103582601474760381495723736500128035554021470967268470645791117639099824497640755914864598130194238644386373460313219120169613300579088270975218157675130048292165721118171194058767022694729173283668694953787103678530789346457171933070068810367319366094263715126178878230690438742049035143268174926030507265505611348217260236975659060407610674018633457703253900694550272365585785054263476766054616498033530691751934062122977372852861447465501338228623133658457168596889979534554710513485853876275346719214978348820093356767858564625062898534792963878798856790085522181586824987864242113856639223231854014943592204480332977361611989280238819530315175627379183674827715742752554537196126275599123521266254834590884195887597440700950451069796052632713349565574532920593157362560949340042479100995657219946814439973117161314335389147199941588552394761394942177851333193917548118310466133932719960046758131026292587868681286922558845890291403238468654714282938420330632631760665088955377318043166569644132794928710106673195562487151053481408533263018333077093588598059529490496880002412779378589647280648345656677703920325361124197425919268372336758265546708704513201427685115208795027811113758614676555038190245187130362003736787846826180832969330382841938666121643090149669778325844993509078342646446547073922029747971089240599092083687856166746460463613200088794514256448612763028191537385632502388047549512976270812841848089847320603020155777328470633758067649434628883508628233814589579928390560150751834337516995505415656107658017228560137482620882760603834371130440144288589219151034803624088657527315446968969533865774769812649645831510204428300879304952626924146832699248255545286105785128053649552644894877444588115515571909492147644353479420171213193253876829879655690991290491895712681589992388677005321744867884139561169387442324785242991272017253426321668877115326419515165216317298816540782266797518832670516209691471691875176583418074853800101725058464297162035549736532281374013249643786595674143310448701254114949232572578056878650721505481425221280514572220210646085297219702146985620068297843361366523745494795665248658631647511517902009275231404631753020578261617071997433885516561966332874660434961047525443375896968528633959580188910799781343774753222633127022328874360809645307629229710344117230170605032844122141336016630668460794118638028054149143832992428884058980994273737714802933456474957567585254241742635346918361957254059236892838623794388259137203316220656359716857110273784029090997423082889153036146054974445337784224582515759656205767287511947298042724901827222334221051864772801661313654138149822452364832178967386963650220997107682273746419793876483591788428348193657123850493121859516971833815754173198499456299828946770413428229607619074706824148499512167364096384156023732172840289833289387283744456742643147689304448607097058832916224198452855059724420288356566346485863623835185460334769473511286176991855947644625703713082459484587496956823886311647924006228293650569041015360735338658135569419998280966691622321948525831651384251732512274787040017354180280780308750875920189642322471028747631408187635208463420621587426164888005605249029362464191042597681253315499203927722879340845194626040573914574907778273496077918294452867606950786508467652971668652555193317690307885371033759685117634801357501759517812535133014400290738836502850321563606756302333236791072103075442739734015610364889463804071870896682464123957734799152296738510792749791178843654068000725060378583010865330110878729672060240134505087795312084059994879333556120156642560275726694322667707847020847577161688875969537810625527335436154218746692368202798226390903679882984164616916003103213456665730554349685090822841360921508771051632163699442728674103202909938784007349415934176289289774967040430309376
[termina aqui]

sexta-feira, 27 de novembro de 2009

Protocolo de IPC e tranferencia de dados

Gente, desenvolvendo o protocolo PTDS1, acabei desenvolvendo um procolo simples para IPC (Inter Process Comunication), chama-se PCPR (Protocolo de comunicação de processos remotos):

[2][msg][data_size][data][cks][4]

[2] byte 2 (1 byte);
[msg] mensagem (1 byte)
[data_size] tamanho do bloco de dados de 1 à 250 (1 byte)
[data] dados (maximo 250 bytes)
[cks] checksum do pacote, exeto o primeiro e os 2 ultimos caracteres (2, cks e 4)
[4] byte 4 indicando o fim do pacote (1 byte)

cada frame do pacote tem no máximo 255 caracteres.
Não serve para enviar grandes blocos de dados como arquivos, para isto estou desenvolvento o PTDS.
Ótimo para IPC entre processos remotos

segunda-feira, 16 de novembro de 2009

E Se a nossa informática não fosse em base 2

Você nunca pensou como seria a nossa informática se em vez da base 2, utiliza-se outras bases?
A base 2 na informatica dá-se devido ao fato de que transistores (dispositivos eletrônicos que, na informática, são utilizados para guardar bits) assumem dois estados, ligado ou desligado, ou seja, 1 e 0.

Mas e se tivessem outras bases. Veja esta lista que mostra quantos valores caberiam em alguns tipos de variáveis muito conhecidas dos programadores:


Legenda
B = Base binaria
T = Base trinaria
O = Base Octal
H = Base Hexadecimal


Byte
B 256
T 6.561
O 16.777.216
H 4.294.967.296

Word
B 65.536
T 43.046.721
O 281.474.976.710.656
H 18.446.744.073.709.551.616

Integer 32Bits
B 4.294.967.296
T 1.853.020.188.851.841
O 79.228.162.514.264.337.593.543.950.336
H 340.282.366.920.938.463.463.374.607.431.768.211.456

Integer 64Bits
B 64 18.446.744.073.709.551.616
T 64 3.433.683.820.292.512.484.657.849.089.281
O 6.277.101.735.386.680.763.835.789.423.207.666.416.102.355.444.464.034.512.896
H 115.792.089.237.316.195.423.570.985.008.687.907.853.269.984.665.640.564.039.457.584.007.913.129.639.936

sexta-feira, 13 de novembro de 2009

Protocolo para tranferencia de arquivos e IPC multiplos

Comecei agora a desenvolver um protocolo para fazer a comunicação entre dois processos remotos, permitindo que arquivos, mensagens de IPC e outros dados sejam transferidos simultaneamente.

O protocolo possui uma interface para a transferencia de arquivos bem trabalhada, permitido que, centenas de arquivos sejam tranferidos simultanemante (Claro que tudo depende da capacidade da rede).

Estou trabalhando com pacotes de no máximo 512 bytes. Não sei se é essa a causa, mas algo esta consumindo CPU. Vou fazer testes com buffers maiores.

Pretendo, ao término, disponibilizar o protocolo.

quinta-feira, 27 de agosto de 2009

Criptografus 2.0.1

Hoje disponibilizei uma nova versão do Criptografus, programa para criptografia de arquivos.

Nesta nova versão, alem de alguma correções visuais e do novo algoritmo de criptografia, o Criptografus conta com uma maneira mais segura de manter seus dados.

Aparentemente nada funcional foi alterado, porém, as modificações permitirão, nas próximas versões, meneiras de proteger o Criptografus com senha e configurações independentes para cada usuário.

Para maneter seu Criptografus atualizado, faça o download da nova versão (2.0.1) agora.

Computador vai substituir nariz humano em usina nuclear

Notícia "piratiada" de: http://tecnologia.terra.com.br/interna/0,,OI3943493-EI4799,00.html

Muitos das centenas de trabalhadores na usina nuclear Shearon Harris, em New Hill, Carolina do Norte, se ocupam de tarefas de alta tecnologia como calibragem de equipamento, monitoração de campos radiativos ou controle do reator. Mas há três funcionários de plantão 24 horas ao dia para uma função que poderia ter vindo de outro século.

Eles farejam fumaça. Caminham quilômetros a cada dia, subindo e descendo escadas e percorrendo vastos corredores e passagens estreitas, visitando os pontos mais sensíveis pelo menos uma vez por hora para garantir que não tenha surgido um incêndio.


continuie lendo esta notícia aqui



sexta-feira, 14 de agosto de 2009

Criando funções de callback em C++

Funções de callbacks são fundamentais em alguns objetos (objetos que fazem monitoramento e precisam disparar eventos dentro do programa).

Callbacks na verdade são ponteiros para funções, ou seja, são como variaveis que disparam funções, hora disparar a função x, hora disparam a função y.

Em c++, uma função de callback pode ser definida da seguinte maneira

void (*Callback)(int parametro)

entendendo as partes:

"void" -> como em outra função qualquer, indica-se o tipo de valor retornado, que neste caso é um void (não retorna nada)

"(*Callback)" -> este é o nome da variavel, é a variavel "Callback" que vai apontar para as funções;

"(int parametro)" -> são os parametros que a função de callback vai receber.

Um ponteiro como o nosso ((*Callback)) possui apenas um unico parametro, do tipo Int, logo não pode apontar para funções com um parametro "const char" ou para uma função que tenha mais do que um parametro

Apontando a nossa variavel ((*Callback)) para uma função:

para apontar a nossa função de callback para outra função, fizemos assim

(Callback) = &nome_da_função

Chamando a função apontada por nossa variavel

Para chamar a função apontada por nossa variavel, chamamos assim:

(*callback)(1);

=======================================

Programa exemplo:
#include
#include

typedef const char* string;

using namespace std;
void teste(int valor){
cout <<>