Regisztráció Blogot indítok
Adatok
szimih

9 bejegyzést írt és 19 hozzászólása volt az általa látogatott blogokban.

Admin Szerkesztő Tag Vendég
A DE IK Prog2, programozás bevezető kurzusát támogató címbeli intézményt most megszervezzük! Párhuzamosan ez a poszt a nyolcadik előadás és labor posztja is. Prog2 labor labdarúgó-bajnokság, PLB Figyelj, mert a határidő közeli, lásd a kiírást a könyvben! 1.3.1.1.2.Prog2 labor…..
RUSH: "Welcome aboard the Hammond, Eli. Yes, that is the planet Earth and yes, you are on a spaceship."  SGU Stargate Universe http://www.imdb.com/title/tt1286039/ A laborra történő felkészülés mellé az alábbi muzsikát javasoljuk végtelenítve:…..
Ezzel a korábbi posztunkkal izzítottuk be a vadászok billentyűzetét: olvashatóan volt bizonytalanság, de most már biztosan (ma éjfélkor timeout :)  meglesz az 5 megajánlott jeles! Ez a Vadászok Ligája: a trófeák 5. hulláma, feladatai (csak) az 50 pont felett teljesítők…..
Íme a harmadik hullám, de élvezd az elsőt és a másodikat is, ahol még számos fraktálos, genomos, fehérjés és mindenféle 1-7, 1-9 trófeás vad les itt is, a korábbi első, illetve a második hullámban Rád! (Ha mást nem mondunk, akkor a szokásos "hegylakó szabály" van:…..
szimih 2011.05.01 21:07:06
Mivel a beadandót C-ben csináltam meg úgy gondoltam beadok valamit C++-ban. Keresgéltem neten kicsit socket kezelése C++-ban, voltak is leírások példák, ezt hoztam most össze.

(ÉLES) Proxy 1: írj egy proxy szervert!

/*
Fordítás: c++ -pedantic -ansi -O3 -o tcpproxy_server tcpproxy_server.cpp -L/usr/lib -lstdc++ -lpthread -lboost_thread -lboost_system
Hasznalat: ./tcpproxy_server helyi_ip helyi_port tavoli_ip tavoli_port
*/
#include <cstdlib>
#include <cstddef>
#include <iostream>
#include <string>

#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include <boost/asio.hpp>

namespace tcp_proxy
{
namespace ip = boost::asio::ip;

class tcp_bridge : public boost::enable_shared_from_this<tcp_bridge>
{
private:

typedef boost::function <void (const boost::system::error_code&, const size_t& )> handler_type;
typedef ip::tcp::socket socket_tipus;

public:

typedef tcp_bridge type;
typedef boost::shared_ptr<type> ptr_type;

tcp_bridge(boost::asio::io_service& ios)
: kliens_socket_(ios),tavoli_socket_(ios)
{}

socket_tipus& socket()
{
return kliens_socket_;
}

void start(const std::string& tavoli_host, unsigned short tavoli_port)
{
tavoli_socket_.async_connect(ip::tcp::endpoint(boost::asio::ip::address::from_string(tavoli_host),tavoli_port),
boost::bind(&type::handle_remote_connect,shared_from_this(),boost::asio::placeholders::error));
}

void handle_remote_connect(const boost::system::error_code& error)
{
if (!error)
{
tavoli_write_ = boost::bind(&type::handle_remote_write,shared_from_this(),boost::asio::placeholders::error);

kliens_write_ = boost::bind(&type::handle_client_write,shared_from_this(),boost::asio::placeholders::error);

tavoli_read_ = boost::bind(&type::handle_remote_read,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred);

kliens_read_ = boost::bind(&type::handle_client_read,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred);

tavoli_socket_.async_read_some(boost::asio::buffer(tavoli_adat_, max_adat_hossz),tavoli_read_);

kliens_socket_.async_read_some(boost::asio::buffer(kliens_adat_, max_adat_hossz),kliens_read_);
}
else
close();
}

private:

void handle_client_write(const boost::system::error_code& error)
{
if (!error)
{
tavoli_socket_.async_read_some(boost::asio::buffer(tavoli_adat_, max_adat_hossz),tavoli_read_);
}
else
close();
}

void handle_client_read(const boost::system::error_code& error,const size_t& bytes_transferred)
{
if (!error)
{
async_write(tavoli_socket_,boost::asio::buffer(kliens_adat_,bytes_transferred),tavoli_write_);
}
else
close();
}

void handle_remote_write(const boost::system::error_code& error)
{
if (!error)
{
kliens_socket_.async_read_some(boost::asio::buffer(kliens_adat_, max_adat_hossz),kliens_read_);
}
else
close();
}

void handle_remote_read(const boost::system::error_code& error,
const size_t& bytes_transferred)
{
if (!error)
{
async_write(kliens_socket_,boost::asio::buffer(tavoli_adat_, bytes_transferred),kliens_write_);
}
else
close();
}

void close()
{
if (kliens_socket_.is_open()) kliens_socket_.close();
if (tavoli_socket_.is_open()) tavoli_socket_.close();
}

socket_tipus kliens_socket_;
socket_tipus tavoli_socket_;

enum { max_adat_hossz = 4096 };
char kliens_adat_[max_adat_hossz];
char tavoli_adat_[max_adat_hossz];

handler_type kliens_write_;
handler_type tavoli_write_;
handler_type kliens_read_;
handler_type tavoli_read_;

public:

static inline ptr_type create(boost::asio::io_service& ios)
{
return ptr_type(new type(ios));
}

class acceptor
{
private:
typedef boost::function<void (const boost::system::error_code&)> handler_type;

public:

acceptor(boost::asio::io_service& ios,
unsigned short helyi_port,
unsigned short tavoli_port,
const std::string& helyi_host,
const std::string& tavoli_host)
: io_service_(ios),
helyi_cim(boost::asio::ip::address_v4::from_string(helyi_host)),
acceptor_(ios,ip::tcp::endpoint(helyi_cim,helyi_port)),
tavoli_port_(tavoli_port),
tavoli_host_(tavoli_host)
{}

bool kapcsolat_elfogadasa()
{
try
{
session_ = type::create(io_service_);
acceptor_.async_accept(session_->socket(),
boost::bind(&acceptor::handle_accept,this,
boost::asio::placeholders::error));
}
catch(std::exception& e)
{
std::cerr << "Kapcsolat elfogagadasa kivetel: " << e.what() << std::endl;
return false;
}
return true;
}

private:

void handle_accept(const boost::system::error_code& error)
{
if (!error)
{
session_->start(tavoli_host_,tavoli_port_);
if (!kapcsolat_elfogadasa())
{
std::cerr << "Visszautasitotta." << std::endl;
}
}
else
{
std::cerr << error.message() << std::endl;
}
}

boost::asio::io_service& io_service_;
ip::address_v4 helyi_cim;
ip::tcp::acceptor acceptor_;
ptr_type session_;
handler_type handle_;
unsigned short tavoli_port_;
std::string tavoli_host_;
};

};
}

int main(int argc, char* argv[])
{
if (argc != 5)
{
std::cerr << "Hasznalat: ./tcpproxy_server helyi_ip helyi_port tavoli_ip tavoli_port" << std::endl;
return 1;
}

const unsigned short helyi_port = static_cast<unsigned short>(::atoi(argv[2]));
const unsigned short tavoli_port = static_cast<unsigned short>(::atoi(argv[4]));
const std::string helyi_host = argv[1];
const std::string tavoli_host = argv[3];

boost::asio::io_service ios;

try
{
tcp_proxy::tcp_bridge::acceptor acceptor(ios,helyi_port,tavoli_port,helyi_host,tavoli_host);// proxy ostály
acceptor.kapcsolat_elfogadasa();
ios.run();
}
catch(std::exception& e)
{
std::cerr << e.what() << std::endl;
return 1;
}

return 0;
}
szimih 2011.05.01 21:07:54
(ÉLES) Foci 3: írj progit "igazi" (pl. YouTube-os) videón a labda követésére!

www.youtube.com/watch?v=PoXvcy9MmRQ

És és Joe89 kolega továbbfejlesztettük az előző programot bár még korántsem tökéletes ( gyors mozgást nem szívleli lehet a videó minősége is közrejátszik, videó végén lévő képsor ). Már korábban is voltak társulások most mi is osztozni szeretnénk a pontokon, én úgyse kaphatom meg az össze pontot mivel egy hasonlót beküldtem másrészt mégiscsak ketten vittük tovább.
szimih 2011.04.16 18:16:12
Még nagyon béta verzió de már látszik némi eredmény:)
www.youtube.com/watch?v=5KoB9sWl9w8

( videót csak linkkel lehet megnézni majd törlöm, nem akarom megsérteni a személyiségi jogokat )

(Youtubról letöltött videón nem tudtam a színkövetést belevenni talán egy jobb minőségűvel sikerülne + nem kéne egérrel megadni mi kövessen)
Proghelp Védés C-ben! 2011.04.18 10:25:00
A beadandó C megoldása: // z.c//// LZW fa építő// Programozó Páternoszter//// Copyright (C) 2011, Bátfai Norbert, nbatfai@inf.unideb.hu, nbatfai@gmail.com//// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as…..
Aki úgy érzi a félév során megtudott egy s mást a programozásról!Programozók körében használatos elterjedt kifejezések:1. Fura!2. De hiszen ez korábban már futott!3. Csak néhány apróságot kell kijavítani.4. Ez biztos valami hardverhiba.5. Valaki közületek piszkálta a bejövő…..
Proghelp C gyors talpaló V. lecke 2011.03.27 16:44:00
Felhasználó által definiált típusokA tömbök minden eleme azonos típusú kell hogy legyen. Gyakran szükségünk van azonban olyan egymással összetartozó elemek tárolására is, melyek nem azonos típusúak, mégis egy egyedre jellemzők. Ezeket leggyakrabban adatbázisokban találjuk…..
Proghelp Laborkártyák V. 2011.03.27 16:06:00
1. kártyaint a;    int *b;int c[5]; int *d[5];int e[3][3]; int *f ();void* (*g)(void *);  // idáig voltak már kérdések egyszerint &h = a;          // h változóval hivatkozunk az a változóravoid fgv(int& i);      // egy…..
Proghelp Lakorkártyák III. 2011.03.26 20:36:00
1. kártya  #include <stdio.h>intmain (void){  struct                         // struktúra melynek egy változója van alma ami integer típusú  {    int alma;  } p = {55}, *pp; …..
Íme a második hullám, de élvezd az elsőt is, még számos fraktálos, genomos, fehérjés és mindenféle 1-7 trófeás vad les itt is, a korábbi hullámban Rád! (Ha mást nem mondunk, akkor a szokásos "hegylakó szabály" van: csak egy maradhat, azaz az első vadászé a trófea.)…..
szimih 2011.03.19 18:56:30
@nb: Fúú, elírtam az indexelést, de javítottam hétfőn már a jót viszem:D
Laborvezetőknek A 3. előadás laborkártyáit kérdezzük végig a hallgatóktól (és persze a korábbiakból is osszunk ki, amelyeket fontosnak érezünk). Ha indokolt, akkor bevezethető a több sebességes labor, ahol az előre készülő hallgatók későbbi feladatokkal dolgoznak, vagy…..
Mivel jó néhányan ráéreztek a dolog ízére, íme ide gyűjtünk majd néhány további kisbajnokságot. (Itt a kettőnél nagyobb egyenlőt érő kisbajnokságok programjait személyesen kell bemutatni és megvédeni, kivéve, ha jelezzük, hogy adott poszt kommentjeként is beküldhető.) 7…..
Laborvezetőknek A február 21-i héten az első előadás laborkártyáit kérdezzük végig a hallgatóktól szerdáig, szerda után (miután lement a fizikai előadáson) a másodikét! Ha a laborvezető jónak, szükségesnek tartja, korábbi (az első előadásbeli) kártyákat is vigyen be az…..
3. gyorstalpaló témánk a ciklusok, van is C-ben 3 féle.Mint minden magas szintű programozási nyelvben a C-ben is vannak olyan utasítások, melyek egy feltételtől függően többször is végrehajtják ugyanazt az utasítást, vagy utasítás blokkot.I. while ciklus:Felépítése: …..
Proghelp C gyors talpaló I. lecke 2011.02.14 18:04:00
Végre elkészült az első anyag a gyorstalpalóból. Mivel sokan nem nagyon találkoztatok a C-vel ( tudomásom szerint ) a legalapabbaktól indulunk.Legeslegelső C programunk:int main(){    return 0;    }A C nyelv függvények halmaza. Maga a főprogram is (main()) egy…..
Módosítgassuk az első előadásban felvillantott, az strncpy könyvtári függvény manuáljabeli példa alapján megírt implementációnkat, hogy a forrásban kezdjen úgy kinézni néhány sor, mint amilyenek a C programok szoktak lenni! Például az Androidos telefonok Linux kernelében…..
Proghelp Laborkártyák I. 2011.02.08 20:03:00
1. kártya #include <stdio.h> int main (void) {    int h = 0;    int n = 0x01;            //*n változó deklarálása egy hexadecimális számmal (0000....01 így néz ki kettes számrendszerben)*//        do…..
Második kisbajnokság Avagy a „bajnokság van, mindenki nevezett” intézmény egy blogos változatát olvasod. Itt az első kommentben érkezett helyes választ adó viszi el a kisbajnokságot (illetve, ha olyan válaszol helyesen, aki nem vette fel az előadást a Neptunban, akkor…..
szimih 2011.02.07 21:17:28
@nb: Rossz forrást vágtam ki és fordítottam le. A gyermek folyamat a végtelen ciklus és sleep kombinációja miatt nem fog "végetérni". Zombi folyamat lesz.
szimih 2011.02.07 21:20:36
Üdvözlet!Mostantól a Laborkártyák (és valószínűleg a talpalók) ide fognak felkerülni, nyíltság miatt. Igyekszünk minél hamarabb kidolgozni az összes jelenleg kiadott kártyát minél hamarabb hogy a hallgatók naprakészek legyen a laborokon. Nem vagyunk mi sem gépek, ezért…..