473,770 Members | 2,137 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Nodes with unlimited children.

Hi All,

I plan on using the following C++ code
to create nodes with unlimited children:

// I would like to declare NodeT like this,
// but it won't compile because Lnk_T is not defined yet.

struct NodeT { Lnk_T Lnk ; };

So I have to declare NodeT like this instead:

struct NodeT {
struct { NodeT * * B, * * E, * * Room ; } Lnk ; };
typedef NodeT * Link ;

typedef Link * Link_P ;

// B is the Beginning of an array of pointers.
// E is the End of an array of pointers that are in use.
// Room the end of an array of all pointers, used or not.

struct Lnk_T { Link_P B, E, Room ; };

Lnk_T Lnk ;

enum { Chunk = 4,
Sz_Ptr = sizeof Link, Sz_Node = sizeof NodeT };

GrowList ( Lnk_T & Lnk ) {
if ( Lnk.E + 1 < Lnk.Room ) return;
int Room = Lnk.Room - Lnk.B + Chunk, E = Lnk.E - Lnk.B ;
Lnk.B = ( Link_P ) realloc( Lnk.B, Room * Sz_Ptr );
Lnk.Room = Lnk.B + Room ; Lnk.E = Lnk.B + E ;
memset( Lnk.E, 0, ( Lnk.Room - Lnk.E ) * Sz_Ptr ); }
// Below is an example of is how the above might be used,
// I know that it works.

__stdcall WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) {

GrowList ( Lnk ); // Lnk is a global, so it's initialized.

Link & P = * Lnk.E ++ ;

P = ( Link ) realloc( P, Sz_Node );

memset ( P, 0, Sz_Node );

GrowList ( ( Lnk_T & ) P->Lnk );

{ Link Passed = P, & P = * Passed->Lnk.E ++ ;

P = ( Link ) realloc( P, Sz_Node );

memset ( P, 0, Sz_Node );

GrowList ( ( Lnk_T & ) P->Lnk );

// etc.
}

But is there any way to declare NodeT so that
I don't have to use that ( Lnk_T & ) cast ?
Jul 22 '05
47 2705
Hi Kelsey Bjarnason,

Re:
#define Loop( N ) int J = -1, LLL = N ; while ( ++ J < LLL )

You commented: << Marvellous; symbol clashes,
just because you use this macro twice in the same scope.
Talk about badly-written. >>

You're worried about compilation errors ?

Real programmers are Never concerned about that.

This code compiles, and it does just what I would expect:

FuBar () { int X = -1, Y = -1 ;

Loop ( 6 ) { ++ X ; Loop ( 7 ) ++ Y ; }

// Prints: 5 and 6

printf ( " %d and %d ", X, Y ); }

You wrote: <<
Do us a favour: never, ever, post your code anywhere again.
Some poor unsuspecting soul might think
you know what you're doing and try to mimic you. >>

Call me an ignorant idiot ( yet again ),
but I, for one, don't think you're a Real programmer.

I started coding HP-67 calculators
( with the magnetic strips ) back in 1976.

Programming has been my sole profession since the start of 1982,
and, as you can see, I'm building my own newsreader...

So it's also my hobby.

I wrote: << I know nothing about Eclipse,
but I am curious as to who exactly would want a machine
to control so many aspects of one's source code. >>

And you replied: << To automate converting code such as yours
into something sane. >>

Now I know you're not a programmer,
changing the whitespace, macros and such
is a really good way to familiarize yourself with the code.

That's why I sometimes do that to my own code.
( e.g. Stuff I wrote 12 years ago )
Jul 22 '05 #31
Jeff Relf wrote:
Hi Kelsey Bjarnason,

Re:
#define Loop( N ) int J = -1, LLL = N ; while ( ++ J < LLL )

You commented: << Marvellous; symbol clashes,
just because you use this macro twice in the same scope.
Talk about badly-written. >>

You're worried about compilation errors ?

Real programmers are Never concerned about that.


Real programmers don't piss their colleagues off. They write clear, simple,
robust, and easily-changed code. This helps keep their colleagues in the ...
loop.

--
Phlip
http://industrialxp.org/community/bi...UserInterfaces
Jul 22 '05 #32
Hi The Ghost In The Machine,

You showed something like this:

for ( list_of_things_ type::const_ite rator
i = list_of_things. begin();
i != list_of_things. end();
i ++ )
{ const C & obj = *i;
/* ... obj ... */
}

And then you commented: <<
Compared to this level of elegance, Jeff's code is,
in the considered opinion of this particular C++ programmer,
swamp muck. :-P~~~ >>

Are you really a C++ programmer ? I don't think so.

Java maybe, server side perhaps,
but you're not a serious Win XP C++ programmer.

You want to make comparisons ?

This is how I loop through a list of unthread Usenet messages:
( From news:_J******** *************** *@NCPlus.NET )

LoopC ( & Flat )
if ( Eq ( Par, ( * Arr )->Ln [ _MID ] ) ) break ;

This is how I delete a forest of threaded messages:

DeC ( Lnk_T Lnk ) { if ( ! Lnk->B ) return ;
LoopC ( Lnk ) { Lnk_T P = * Arr ;

// Recursively deletes... how fun.

DeC ( P );

// Deletes the array of lines that contain
// the abbreviated headers.

LineArr Ln = P->Ln - 1 ;
Loop( _Lns ) free ( * ++ Ln ); free ( P ); }

free ( Lnk->B ); }

I'm looking at your way... and my way...

I'm comparing the two, and I'm very much preferring my way.

By the way...

People are Still inventing wheels... as they well should.

It's called: A better tire.
Jul 22 '05 #33
Jeff Relf wrote:

Hi The Ghost In The Machine,


_______________ ______
/| /| | |
||__|| | Please do not |
/ O O\__ | feed the |
/ \ | Trolls |
/ \ \|_____________ ________|
/ _ \ \ ||
/ |\____\ \ ||
/ | | | |\____/ ||
/ \|_|_|/ | _||
/ / \ |____| ||
/ | | | --|
| | | |____ --|
* _ | |_|_|_| | \-/
*-- _--\ _ \ | ||
/ _ \\ | / `
* / \_ /- | | |
* ___ c_c_c_C/ \C_c_c_c_______ _____
--
Karl Heinz Buchegger
kb******@gascad .at
Jul 22 '05 #34
Hi The Ghost In The Machine,

Re:
#define LoopChildren \
Link _Lnk = Lnk.B - 1 ; while ( ++ _Lnk < Lnk.P )

You wrote: << Also, you could just do

while(_Lnk < Lnk.P) _Lnk++;

though it depends on whether you've looked at the assembly
output or not to see which method's more efficient. >>

No, you missed one of the main reasons for LoopChildren:

It pre-increments. ( Hence the initial -1 )

Your alternatives, mentioned in your other posts,
all used post-increments, which I don't like.

The other reason for defining something like LoopChildren
is how clean it makes the code look.

For an example of that, see my other post:
news:_J******** *************** *@NCPlus.NET

You mentioned:
" Pointers don't fit in ints anymore. :-) "

I don't ever do that, never did.

All the code that I showed used:

typedef char * Line ;

enum { Sz_Ptr = sizeof Line };

Slap that on a 64-bit computer, and is still works...

I know because I've done this before.

Re: Memory faults,

You asked: <<
And suppose I want to cluster my allocations 8 to a page ?
For that matter, how about allocating an entire page ?
Memory faults are a problem. >>
...
<< ...realloc() is a problem waiting to happen on C++ classes,
if not used properly. >>

My memory usage is not very taxing at all.

I'm not writing a fault-tolerant server
that supports terabytes of data
and has to remain up for months on end.

At any rate,
I'm no longer using the code you were referring to.

Now I only allocate dynamic arrays of pointers,
not nodes...

But even that node that you were referring to was tiny,
just an int and three pointers,
it was not designed to be large.

Jul 22 '05 #35
Hi Karl Heinz Buchegger,

Re: The Ghost In The Machine and me,

You wrote: <<
_______________ ______
/| /| | |
||__|| | Please do not |
/ O O\__ | feed the |
/ \ | Trolls |
/ \ \|_____________ ________|
/ _ \ \ ||
/ |\____\ \ ||
/ | | | |\____/ ||
/ \|_|_|/ | _||
/ / \ |____| ||
/ | | | --|
| | | |____ --|
* _ | |_|_|_| | \-/
*-- _--\ _ \ | ||
/ _ \\ | / `
* / \_ /- | | |
* ___ c_c_c_C/ \C_c_c_c_______ _____


At least we're talking abut C++, doesn't that count ?

I don't think the Ghost is a troll,
I just think he has a different point of view from me.

A lot of people have scored me down too,
but that's fine with me...

I'm not entering anyone's popularity contest.

It's even possible that
The Ghost and I could come to a understanding.

There's so much miscommunicatio n on Usenet...

Why not try to resolve some of it ?
Jul 22 '05 #36
In comp.os.linux.a dvocacy, Jeff Relf
<Jeff_Relf_@_NC Plus.NET.Invali d>
wrote
on 3 Aug 2004 05:19:46 GMT
<_J************ ************@NC Plus.NET>:
Hi Kelsey Bjarnason,

Re:
#define Loop( N ) int J = -1, LLL = N ; while ( ++ J < LLL )

You commented: << Marvellous; symbol clashes,
just because you use this macro twice in the same scope.
Talk about badly-written. >>

You're worried about compilation errors ?

Real programmers are Never concerned about that.

This code compiles, and it does just what I would expect:

FuBar () { int X = -1, Y = -1 ;

Loop ( 6 ) { ++ X ; Loop ( 7 ) ++ Y ; }

// Prints: 5 and 6

printf ( " %d and %d ", X, Y ); }
Bleah.

Maybe what *you* expect. However, if one were to try to
convert it into a more elegant version of C++, inner loops
and all:

#include <stdio.h>
int main(int, char **)
{
int x = -1;
int y = -1;

for(int i = 0; i < 6; i++)
{
x++;
for(int j = 0; j < 7; j++)
y++;
}

printf("%d %d\n", x,y);
}

the results would be quite different -- and in fact
you've posted a bug -- a bad comment, for the most part.

Unless you meant

{ Loop (6) { ++X; } } { Loop (7) { ++Y; } }

which is what would be required to avoid naming collisions.

(The results I get are 5 and 41, before and after conversion.
This is regardless of whether I use 'i' or 'j' as the inner
variable, which shadows the outer one.)

You wrote: <<
Do us a favour: never, ever, post your code anywhere again.
Some poor unsuspecting soul might think
you know what you're doing and try to mimic you. >>

Call me an ignorant idiot ( yet again ),
but I, for one, don't think you're a Real programmer.
"Real" is a weird way of putting it.

I started coding HP-67 calculators
( with the magnetic strips ) back in 1976.
I started with a Wang, perhaps, back in '74 or thereabouts.
So there. :-P

Programming has been my sole profession since the start of 1982,
and, as you can see, I'm building my own newsreader...
I've done RFC977 work. It's rather interesting, actually.

(No, you don't really want to know why. Suffice it to say
it was a phase many young males go through.)

So it's also my hobby.

I wrote: << I know nothing about Eclipse,
but I am curious as to who exactly would want a machine
to control so many aspects of one's source code. >>

And you replied: << To automate converting code such as yours
into something sane. >>

Now I know you're not a programmer,
changing the whitespace, macros and such
is a really good way to familiarize yourself with the code.

That's why I sometimes do that to my own code.
( e.g. Stuff I wrote 12 years ago )


I'm surprised you can read that gunk.

--
#191, ew****@earthlin k.net
It's still legal to go .sigless.
Jul 22 '05 #37
In comp.os.linux.a dvocacy, Jeff Relf
<Jeff_Relf_@_NC Plus.NET.Invali d>
wrote
on 3 Aug 2004 10:03:42 GMT
<_J************ ************@NC Plus.NET>:
Hi The Ghost In The Machine,

Re:
#define LoopChildren \
Link _Lnk = Lnk.B - 1 ; while ( ++ _Lnk < Lnk.P )

You wrote: << Also, you could just do

while(_Lnk < Lnk.P) _Lnk++;

though it depends on whether you've looked at the assembly
output or not to see which method's more efficient. >>

No, you missed one of the main reasons for LoopChildren:

It pre-increments. ( Hence the initial -1 )

Your alternatives, mentioned in your other posts,
all used post-increments, which I don't like.
Your perogative. Personally, I think of preincr and postincr
as where one puts the 'INC Rx' instruction (or perhaps the
'INC memaddr' instruction, depending on compiler sophistication) .

I write

for(int i = 0; i < n; i++)

but others might write

for(int i = 1; i <= n; ++i)

which works equally well except for the one-off.

The other reason for defining something like LoopChildren
is how clean it makes the code look.
Noooooo comment!

For an example of that, see my other post:
news:_J******** *************** *@NCPlus.NET

You mentioned:
" Pointers don't fit in ints anymore. :-) "

I don't ever do that, never did.
Good.

All the code that I showed used:

typedef char * Line ;

enum { Sz_Ptr = sizeof Line };

Slap that on a 64-bit computer, and is still works...

I know because I've done this before.

Re: Memory faults,

You asked: <<
And suppose I want to cluster my allocations 8 to a page ?
For that matter, how about allocating an entire page ?
Memory faults are a problem. >>
...
<< ...realloc() is a problem waiting to happen on C++ classes,
if not used properly. >>

My memory usage is not very taxing at all.
No, but suppose you had N different listtypes?

Also, on an overloaded system, you'll feel it; a cheapie
page fault takes on the order of a few hundreds of nanoseconds,
but a pricey one will take a few milliseconds, as it reads
from swap.

I'm not writing a fault-tolerant server
that supports terabytes of data
and has to remain up for months on end.
Perhaps you should. :-)

At any rate,
I'm no longer using the code you were referring to.

Now I only allocate dynamic arrays of pointers,
not nodes...

But even that node that you were referring to was tiny,
just an int and three pointers,
it was not designed to be large.

--
#191, ew****@earthlin k.net
It's still legal to go .sigless.
Jul 22 '05 #38
In comp.os.linux.a dvocacy, Karl Heinz Buchegger
<kb******@gasca d.at>
wrote
on Tue, 03 Aug 2004 11:34:43 +0200
<41************ ***@gascad.at>:
Jeff Relf wrote:

Hi The Ghost In The Machine,


_______________ ______
/| /| | |
||__|| | Please do not |
/ O O\__ | feed the |
/ \ | Trolls |
/ \ \|_____________ ________|
/ _ \ \ ||
/ |\____\ \ ||
/ | | | |\____/ ||
/ \|_|_|/ | _||
/ / \ |____| ||
/ | | | --|
| | | |____ --|
* _ | |_|_|_| | \-/
*-- _--\ _ \ | ||
/ _ \\ | / `
* / \_ /- | | |
* ___ c_c_c_C/ \C_c_c_c_______ _____


Hmph. Well, if you insist. :-)

--
#191, ew****@earthlin k.net
It's still legal to go .sigless.
Jul 22 '05 #39
In comp.os.linux.a dvocacy, Jeff Relf
<Jeff_Relf_@_NC Plus.NET.Invali d>
wrote
on 3 Aug 2004 09:30:40 GMT
<_J************ ************@NC Plus.NET>:
Hi The Ghost In The Machine,

You showed something like this:

for ( list_of_things_ type::const_ite rator
i = list_of_things. begin();
i != list_of_things. end();
i ++ )
{ const C & obj = *i;
/* ... obj ... */
}

And then you commented: <<
Compared to this level of elegance, Jeff's code is,
in the considered opinion of this particular C++ programmer,
swamp muck. :-P~~~ >>

Are you really a C++ programmer ? I don't think so.
At least I know about C++/STL.

Java maybe, server side perhaps,
but you're not a serious Win XP C++ programmer.

You want to make comparisons ?

This is how I loop through a list of unthread Usenet messages:
( From news:_J******** *************** *@NCPlus.NET )

LoopC ( & Flat )
if ( Eq ( Par, ( * Arr )->Ln [ _MID ] ) ) break ;
If one assumes the declarations

typedef std::string itemtype; // or whatever you want
typedef std::xxx<itemty pe> collectiontype;
// xxx = set, vector, or list
collectiontype collection;
collectiontype: :const_iterator it;

then one can do the following.

it = std::find(colle ction.begin(), collection.end( ), "constant") ;
or
it = std::binary_sea rch(collection. begin(), collection.end( ), "constant") ;
or
inline bool myfunc(itemtype conts & val) { return val == "constant"; }
it = std::find_if(co llection.begin( ), collection.end( ), myfunc);
or[*]
it = std::find_if(co llection.begin( ), collection.end( ),
std::bind2nd(st d::equal_to<ite mtype>, "constant") );

depending on whether one has a value or a function, and whether
the collection's sorted or not. While the declarations take some
time to use properly, it should be fairly clear what I'm doing.

If the collection is a std::set<> with itemtype as the key, one can
also ask

it = collection.find (val);

which is probably simpler.

To save some typing, one can also prefix the source file with

'using namespace std;'

but I for one am not overly fond of that approach;
I prefer using 'std::' so that I can find STL usages the code.

Now, after one's assigned a value to 'it', one can then test 'it':

if(it != collection.end( ))
/* found it */
else
/* not in there */

or one can do inline tests such as:

if((it = collection.find ("constant") ) != collection.end( ))
/* do something with '*it' */
else
/* collection doesn't contain "constant" */

The inline assignment should be familiar to most C programmers.

One can consider 'it' a 'super-pointer', generalizing the concept
of a pointer and allowing for some nice operations. For instance,
one can remove the pointer:

collection.eras e(it);

and the collection will no longer contain that item.

Dereferencing a non-end pointer ('*it') will get the item back.

This is how I delete a forest of threaded messages:

DeC ( Lnk_T Lnk ) { if ( ! Lnk->B ) return ;
LoopC ( Lnk ) { Lnk_T P = * Arr ;

// Recursively deletes... how fun.

DeC ( P );

// Deletes the array of lines that contain
// the abbreviated headers.

LineArr Ln = P->Ln - 1 ;
Loop( _Lns ) free ( * ++ Ln ); free ( P ); }

free ( Lnk->B ); }
collection.eras e(collection.be gin(), collection.end( ));

or just let collection go out of scope. If one wants an
explicit forest of items some work will be required to
encapsulate them properly. I have a "smartpoint er" class
that contains an explicit refcount, but that does take
more space.

I'm looking at your way... and my way...

I'm comparing the two, and I'm very much preferring my way.
Your perogative. I'll say this for your way of coding:
you're close to the hot metal. However, you're also
making it ugly on yourself as you're touching the oil,
trying not to get burned by various syntactic issues,
dancing all around because of the heat, etc.

By the way...

People are Still inventing wheels... as they well should.

It's called: A better tire.


Enjoy your swamp muck, and watch out for the road tacks. :-)
[*] This is where C++/STL starts to get a bit messy, but
std::equal_to is far more general than testfunc() -- presumably
this is documented somewhere, if only in bits/stl_algo.h
or bits/stl_function.h; note that those are included
indirectly and the user should #include <algorithm>
or #include <functional> instead.

There's a method to take a collection type and get the
type of its argument -- collectiontype: :value_type
is suggested in the #include files -- if one doesn't
explicitly declare itemtype. For std::map and std::hashmap,
one can also use collectiontype: :key_type.

--
#191, ew****@earthlin k.net
It's still legal to go .sigless.
Jul 22 '05 #40

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
2787
by: Dinesh | last post by:
Hi, I have two tables 'master' and 'child', the master is the master table for all nodes in all trees. To get children of any node, we need to go to the 'child' table to get the nodeid of the children. The master has about 40,000 such trees with about 400 nodes in each tree. The input to me is the 'Root Node'/'First Node' of a tree. I need to traverse thru all the child nodes starting from 'Root Node' ( and process it ) and then...
8
1546
by: Xamle Eng | last post by:
One of the things I find most unnatural about most XML APIs is that they try to abstract both elements and text into some kind of "node" object when they have virtually nothing in common. The reason these APIs do it is to make it possible for both text and elements to be children of elements. But there is another way. The XPath/XQuery data model does not allow two consecutive text nodes. As far as I can tell, most XML processing...
12
1840
by: Ole Noerskov | last post by:
The function below is supposed to remove all childnodes with a name that starts with "keywords" in "myform" in the window.opener. It works fine if there's one keyword node. But you have to run the function several times if there are many keyword nodes. Why? function removeKeywords() { var form_obj = window.opener.document.getElementById('myform');
19
6786
by: Christian Fowler | last post by:
I have a VERY LARGE pile of geographic data that I am importing into a database (db of choice is postgres, though may hop to oracle if necessary). The data is strictly hierarchical - each node has one, and only one parent. The depth should not exceed 6 or 7 levels. The initial import will have about 6 million leaves, and 3 million branches. I would expect the leaves to grow significantly, in number easily tripling. However, the branches will...
6
3521
by: Nikhil Patel | last post by:
Hi all, Following is a portion of an XML document. I need to remove all nodes that belong to ns0 without deleting their child nodes. So in the following example , I want to delete "ns0:Proposal" and "ns0:Company" but I do not want to delete their child nodes("w:p","w:r","w:t"). How can I do this? <ns0:Proposal> <ns0:Company> <w:p> <w:r>
4
12843
by: J.B. | last post by:
Hi Can anybody show me how to loop all treeview nodes ini vb.net. I've been working on this for days but still no result. I got a sample code in vb 6.0, this one works. Private Sub SaveNested( Dim TNode As Node Set TNode = TreeView1.Nodes(1).Roo While Not TNode Is Nothin
2
2260
by: Kristopher Wragg | last post by:
I'm having some serious problems with the TreeView control. I've got a control that inherits TreeView and has some methods that firstly create a TreeNode then does some recursive procedure to add all the children from a database of a sort. Then once this is complete I clear the nodes, then add the TreeNode so it should be the only root node. The only problem is that for some very VERY strange reason there are two root nodes, with...
4
3028
by: reflex | last post by:
I have to get every node within range or selection? Is it possible? Sry for my engrish :] Ref
1
1804
by: Sasi Kumar | last post by:
I have a xml file. I want to display the nodes and childnodes in my datagrid, i used xmldatasource, but i can read a specific path only. The problem is i should not use dataset and xmldocument. Give me some suggestions <?xml version="1.0" encoding="utf-8"?> <newbookingrs> <bookingid>187250</bookingid> <bookingstatus>We have received your request. As you did not submit the required payment details, no booking will be held for you. If...
0
9619
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9454
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10260
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
10038
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8933
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7460
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5354
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
4007
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
3609
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.