Vernon

and you miss the JSON encoding of special characters but of couse
what does it matter ;-)

On Wed, May 13, 2015 at 3:23 PM, Vernon Hamberg <vhamberg@xxxxxxxxxxxxxxx>
wrote:

> As to building JSON (or any other kind of structure) - It should be easy
> enough to have a few JSON sections, 1 that would have 2 variables
>
> <!-- $JSONBegin$ -->
> {
>
> <!-- $JSONElement$ -->
> "<!-- %string% -->": "<!-- %value% -->"
>
> <!-- $JSONEnd$ -->
> }
>
> Having just looked at JSON details, that is simplistic but extensible, I
> think.
>
> Basic idea is, a CGIDEV2 section can be very small - basically I see it as
> something repeatable.
>
> HTH
> Vern
>
>
> On 5/13/2015 2:11 AM, Kevin Turner wrote:
>
>> Yes, apart from the fact that cgicbldev2 has no built in JSON support as
>> such - you would have to roll your own. Building JSON strings for output is
>> not difficult - it is parsing inbound JSON strings that is tricky.
>>
>> Sent from my iPad
>>
>>  On 13 May 2015, at 06:28, Kelly Cookson <KCookson@xxxxxxxxxxxx> wrote:
>>>
>>> The comments in this thread lead me to think that CGICBLDEV2 would
>>> better help us leverage our existing COBOL skills because CGICBLDEV2 is
>>> written in COBOL, eliminating some of the problems of trying to use CGI
>>> packages written in RPG.
>>>
>>> Am I mistaken in this view?
>>>
>>> Thanks,
>>> Kelly
>>>
>>>
>>> -----Original Message-----
>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of Jon Paris
>>> Sent: Tuesday, May 12, 2015 3:14 PM
>>> To: Web400@Midrange. Web400
>>> Subject: Re: [WEB400] Does the eRPG SDK template system support JSON?
>>>
>>> For the most part Brad COBOL can do anything that RPG can - but it is
>>> more work.
>>>
>>> Imagine RPG in the "bad old days" without Protos and the CONST keyword.
>>>
>>> In RPG by using that one facility I can define a field as 60 long and
>>> pass a literal, a 20 char field, a varying field, a function, etc. etc.
>>>
>>> In COBOL I would have to determine that I did indexed need an X(60) -
>>> set up a temporary one, and then move the value I wanted into it before
>>> passing the parm.
>>>
>>> Similarly COBOL has no Options(*String) so any C-type function that
>>> requires passing a pointer to a null terminated string is a pain in the .
>>>
>>> And on and on.
>>>
>>> When I first had to go back and do this stuff "by hand" it may me
>>> appreciate just how much work the RPG compiler was doing for me.
>>>
>>> The COBOL syntax is also rather verbose since without the protos you
>>> need to specify the way in which the parm is passed on each call for each
>>> parm.
>>>
>>>
>>>
>>> Jon Paris
>>>
>>> www.partner400.com
>>> www.SystemiDeveloper.com
>>>
>>>  On May 11, 2015, at 8:58 PM, Bradley Stone <bvstone@xxxxxxxxx> wrote:
>>>>
>>>> I wondered the same thing, Henrick.
>>>>
>>>> I haven't done COBOL since the 90s but a search shows this answer from
>>>> Bruce Vinning:
>>>>
>>>> http://itknowledgeexchange.techtarget.com/itanswers/calling-rpg-proc-f
>>>> rom-cobol-ile/
>>>>
>>>> I guess I just assumed that with ILE things worked as ILE... If CONST
>>>> ruins that relationship maybe it should be more "publicized".  :)  I
>>>> plan too look further into this issue that's for sure as it's the
>>>> first I've heard of it.
>>>>
>>>> Brad
>>>> www.bvstools.com
>>>>
>>>>  On Mon, May 11, 2015 at 2:03 AM, Henrik Rützou <hr@xxxxxxxxxxxx>
>>>>> wrote:
>>>>>
>>>>> I know nothing about COBOL interface to RPG service programs, what is
>>>>> the difference (besides the /copybook) ?
>>>>>
>>>>> On Mon, May 11, 2015 at 5:04 AM, Kelly Cookson
>>>>> <KCookson@xxxxxxxxxxxx>
>>>>> wrote:
>>>>>
>>>>>  Thanks Jon. There are a number of tools for mobile development on
>>>>>> the IBM i.
>>>>>>
>>>>>> However, our shop has decided to develop mobile client interfaces
>>>>>> using responsive web sites and hybrid apps (Cordorva/PhoneGap). This
>>>>>> is because all of our current mobile developers are coming from a
>>>>>> background of Microsoft .NET web development. Our shop has spent
>>>>>> years developing websites that connect to the IBM i using web
>>>>>> services written in .NET and using the .NET Data Provider.
>>>>>>
>>>>>> For our IBM i COBOL developers (including myself) to become web and
>>>>>>
>>>>> mobile
>>>>>
>>>>>> developers, we will have to use HTML5, CSS3, JavaScript, AJAX, JSON
>>>>>> and Cordova/PhoneGap to develop client interfaces. I was hoping to
>>>>>> use
>>>>>>
>>>>> Node.JS
>>>>>
>>>>>> on the IBM i to give our COBOL developers a path to web services
>>>>>> without having to learn .NET. Node.JS isn't going to work for us at
>>>>>> this time.
>>>>>>
>>>>> But
>>>>>
>>>>>> we can: (a) use our shop's standard technologies to develop web and
>>>>>>
>>>>> mobile
>>>>>
>>>>>> client interfaces, and (b) hook up the client interfaces to web
>>>>>> services developed with COBOL CGI programs. This gets our IBM i
>>>>>> COBOL developers into web and mobile development without having to
>>>>>> learn .NET, and it leverages our existing expertise in COBOL.
>>>>>>
>>>>>> I have designed an architecture for CGI programming on the IBM i
>>>>>> that conforms to REST architectural constraints as described in
>>>>>> Fielding's dissertation. I am now gathering information on tools
>>>>>> available to help
>>>>>>
>>>>> us
>>>>>
>>>>>> with the COBOL CGI programming. Next step, proof of concepts...
>>>>>>
>>>>>> Thanks,
>>>>>> Kelly
>>>>>>
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of Jon
>>>>>> Paris
>>>>>> Sent: Sunday, May 10, 2015 9:36 PM
>>>>>> To: Web400@Midrange. Web400
>>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support JSON?
>>>>>>
>>>>>> For Mobile development with COBOL you should really take a look at
>>>>>>
>>>>> Lansa's
>>>>>
>>>>>> LongRange http://www.longrangemobile.com
>>>>>>
>>>>>> I know that works pretty well with COBOL because I helped translate
>>>>>> a few of the RPG examples into COBOL.
>>>>>>
>>>>>>
>>>>>> Jon Paris
>>>>>>
>>>>>> www.partner400.com
>>>>>> www.SystemiDeveloper.com
>>>>>>
>>>>>>  On May 10, 2015, at 8:00 PM, Kelly Cookson <KCookson@xxxxxxxxxxxx>
>>>>>>>
>>>>>> wrote:
>>>>>>
>>>>>>  I will look for the template system in CGICBLDEV2 when I get it
>>>>>>>
>>>>>> installed and start playing around with it.
>>>>>>
>>>>>>> I literally just started looking at CGI tools. I recently learned
>>>>>>> that our shop will not be adopting Node.JS on the IBM i at any time
>>>>>>> in the foreseeable future. Kind of a bummer. But the same reasons
>>>>>>> for not adopting Node.JS make CGI using COBOL programs an
>>>>>>> attractive alternative. (Every shop is different, and I'm sure
>>>>>>> Node.JS will work wonderfully for a lot of shops. It's just not a
>>>>>>> good fit for us at this time.)
>>>>>>>
>>>>>>> I'm still committed to helping our IBM i COBOL developers become
>>>>>>> web and mobile developers as well. ;-)
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Kelly
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of Jon
>>>>>>> Paris
>>>>>>> Sent: Sunday, May 10, 2015 7:30 PM
>>>>>>> To: Web400@Midrange. Web400
>>>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support JSON?
>>>>>>>
>>>>>>> CGICBLDEV2 uses a template system too Kelly.
>>>>>>>
>>>>>>>
>>>>>>> Jon Paris
>>>>>>>
>>>>>>> www.partner400.com
>>>>>>> www.SystemiDeveloper.com
>>>>>>>
>>>>>>>  On May 10, 2015, at 12:55 PM, Kelly Cookson <KCookson@xxxxxxxxxxxx>
>>>>>>>>
>>>>>>> wrote:
>>>>>>>
>>>>>>>  Thanks Jon. I am looking at CGICBLDEV2 as well. And I'm looking at
>>>>>>>>
>>>>>>> other solutions such as the CGI interface to XMLSERVICE and iWebSrv.
>>>>>>
>>>>>>> The thing I like about eRPG SDK is the use of a template system to
>>>>>>>>
>>>>>>> format data for return to the client. This seems to me a potentially
>>>>>> intuitive way for developers who only do COBOL and DDS to deal with
>>>>>> returning JSON data. Still, I am also looking at other options for
>>>>>> JSON with COBOL (YAJL, PowerEXT, Redvers COBOL JSPN Interface).
>>>>>>
>>>>>>> The client interfaces we develop will using jQuery AJAX to make
>>>>>>>> GET
>>>>>>>>
>>>>>>> and
>>>>>
>>>>>> POST requests, and they will be expecting data formatted in JSON as
>>>>>> the response. By keep the contract between the client and the web
>>>>>> service uniform (AJAX GET and POST requests, JSON responses) we can
>>>>>> develop
>>>>>>
>>>>> client
>>>>>
>>>>>> interfaces that can easily switch between IBM i back ends and
>>>>>> Windows
>>>>>>
>>>>> back
>>>>>
>>>>>> ends. We just need to point the client to a new URL to switch back
>>>>>> ends.
>>>>>> This is one of the benefits of the uniform interface constraint of
>>>>>>
>>>>> RESTful
>>>>>
>>>>>> architecture.
>>>>>>
>>>>>>> Thanks,
>>>>>>>> Kelly
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of Jon
>>>>>>>> Paris
>>>>>>>> Sent: Sunday, May 10, 2015 10:23 AM
>>>>>>>> To: Web400@Midrange. Web400
>>>>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support
>>>>>>>> JSON?
>>>>>>>>
>>>>>>>> Kelly,
>>>>>>>>
>>>>>>>> You might want to also look at the COBOL interfaces for CGIDEV2 (
>>>>>>>>
>>>>>>> http://www.easy400.net/cgicbldev2p/start.pgm).
>>>>>>
>>>>>>> No disrespect to Brad's eRPG but some RPG-oriented interfaces can
>>>>>>>> be
>>>>>>>>
>>>>>>> very difficult to use in COBOL. Reason, in part, is that such
>>>>>> routines
>>>>>>
>>>>> tend
>>>>>
>>>>>> to take advantage of the facilities offered by prototypes - for
>>>>>> example
>>>>>>
>>>>> the
>>>>>
>>>>>> keyword CONST allows you to specify a literal instead of a variable.
>>>>>>
>>>>> COBOL
>>>>>
>>>>>> has no such option and therefore the fields usually need to be
>>>>>> passed exactly as specified in the called routine. That usually
>>>>>> requires quite a bit more work and makes the examples hard to follow.
>>>>>>
>>>>>>> Giovanni has already done the grunt work and provided documented
>>>>>>>>
>>>>>>> native
>>>>>
>>>>>> COBOL interfaces to CGIDEV2 routines that make it much easier.
>>>>>>
>>>>>>> Just a thought.  Unless Brad has added a lot of new stuff to eRPG
>>>>>>>> that
>>>>>>>>
>>>>>>> I am unaware of, I think that the capabilities of CGIDEV2 are a
>>>>>> close
>>>>>>
>>>>> match.
>>>>>
>>>>>>
>>>>>>>> Jon Paris
>>>>>>>>
>>>>>>>> www.partner400.com
>>>>>>>> www.SystemiDeveloper.com
>>>>>>>>
>>>>>>>> On May 10, 2015, at 10:46 AM, Kelly Cookson
>>>>>>>> <KCookson@xxxxxxxxxxxx>
>>>>>>>>
>>>>>>> wrote:
>>>>>>
>>>>>>> Thanks Brad.
>>>>>>>>>
>>>>>>>>> I assume I wouldn't have any problems implementing this in ILE
>>>>>>>>> COBOL.
>>>>>>>>>
>>>>>>>> I've seen several tutorial examples of creating JSON in RPG, which
>>>>>> is
>>>>>>
>>>>> made
>>>>>
>>>>>> easier by built-in functions (like trim) and by  the new +=
>>>>>> assignment operator. Unfortunately, RPG is not a standard language
>>>>>> in our shop. So
>>>>>>
>>>>> I'd
>>>>>
>>>>>> need to use eRPG SDK in ILE COBOL.
>>>>>>
>>>>>>> Thanks,
>>>>>>>>> Kelly
>>>>>>>>>
>>>>>>>>> -----Original Message-----
>>>>>>>>> From: WEB400 [mailto:web400-bounces@xxxxxxxxxxxx] On Behalf Of
>>>>>>>>> Bradley Stone
>>>>>>>>> Sent: Sunday, May 10, 2015 8:10 AM
>>>>>>>>> To: Web Enabling the IBM i (AS/400 and iSeries)
>>>>>>>>> Subject: Re: [WEB400] Does the eRPG SDK template system support
>>>>>>>>> JSON?
>>>>>>>>>
>>>>>>>>> Hi, Kelly.
>>>>>>>>>
>>>>>>>>> The eRPG SDK is a template designed system, so if you create JSON
>>>>>>>>>
>>>>>>>> templates the eRPG SDK would work the same as if it was using XML,
>>>>>> HTML,
>>>>>>
>>>>> or
>>>>>
>>>>>> pretty much anything else.
>>>>>>
>>>>>>> It doesn't know what type of data you're creating using the
>>>>>>>>> templates and replacement variables.  :)
>>>>>>>>>
>>>>>>>>> Brad
>>>>>>>>> www.bvstools.com
>>>>>>>>>
>>>>>>>>> On Sun, May 10, 2015 at 2:15 AM, Kelly Cookson
>>>>>>>>> <KCookson@xxxxxxxxxxxx>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>  Suppose I want to develop a CGI program in ILE COBOL using eRPG
>>>>>>>>>> SDK.
>>>>>>>>>>
>>>>>>>>>> Can the ILE COBOL program read a DB2 table and use the eRPG SDK
>>>>>>>>>> template system to return a JSON string?
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> Kelly Cookson
>>>>>>>>>> IT Project Leader
>>>>>>>>>> Dot Foods, Inc.
>>>>>>>>>> 1.217.773.4486 ext. 12676
>>>>>>>>>> kcookson@xxxxxxxxxxxx<mailto:kcookson@xxxxxxxxxxxx>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>>>>>> subscribe, unsubscribe, or change list options,
>>>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please
>>>>>>>>>> take a moment to review the archives at
>>>>>>>>>> http://archive.midrange.com/web400
>>>>>>>>>>
>>>>>>>>> .
>>>>>
>>>>>> --
>>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>>>>> subscribe, unsubscribe, or change list options,
>>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take
>>>>>>>>> a moment to review the archives at
>>>>>>>>> http://archive.midrange.com/web400.
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>>>>> subscribe, unsubscribe, or change list options,
>>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take
>>>>>>>>> a moment to review the archives at
>>>>>>>>> http://archive.midrange.com/web400.
>>>>>>>>>
>>>>>>>> --
>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>>>> subscribe, unsubscribe, or change list options,
>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take
>>>>>>>> a moment to review the archives at
>>>>>>>> http://archive.midrange.com/web400.
>>>>>>>>
>>>>>>>> --
>>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>>>> subscribe, unsubscribe, or change list options,
>>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take
>>>>>>>> a moment to review the archives at
>>>>>>>> http://archive.midrange.com/web400.
>>>>>>>>
>>>>>>> --
>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>>> subscribe, unsubscribe, or change list options,
>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take a
>>>>>>> moment to review the archives at
>>>>>>> http://archive.midrange.com/web400.
>>>>>>>
>>>>>>> --
>>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>>> subscribe, unsubscribe, or change list options,
>>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take a
>>>>>>> moment to review the archives at
>>>>>>> http://archive.midrange.com/web400.
>>>>>>>
>>>>>> --
>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>> subscribe, unsubscribe, or change list options,
>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take a
>>>>>> moment to review the archives at http://archive.midrange.com/web400.
>>>>>>
>>>>>> --
>>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>>> mailing list To post a message email: WEB400@xxxxxxxxxxxx To
>>>>>> subscribe, unsubscribe, or change list options,
>>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>>> or email: WEB400-request@xxxxxxxxxxxx Before posting, please take a
>>>>>> moment to review the archives at http://archive.midrange.com/web400.
>>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Henrik Rützou
>>>>>
>>>>> http://powerEXT.com <http://powerext.com/>
>>>>> --
>>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>>> mailing
>>>>> list
>>>>> To post a message email: WEB400@xxxxxxxxxxxx
>>>>> To subscribe, unsubscribe, or change list options,
>>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>>> or email: WEB400-request@xxxxxxxxxxxx
>>>>> Before posting, please take a moment to review the archives
>>>>> at http://archive.midrange.com/web400.
>>>>>
>>>> --
>>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400)
>>>> mailing list
>>>> To post a message email: WEB400@xxxxxxxxxxxx
>>>> To subscribe, unsubscribe, or change list options,
>>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>>> or email: WEB400-request@xxxxxxxxxxxx
>>>> Before posting, please take a moment to review the archives
>>>> at http://archive.midrange.com/web400.
>>>>
>>> --
>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
>>> list
>>> To post a message email: WEB400@xxxxxxxxxxxx
>>> To subscribe, unsubscribe, or change list options,
>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>> or email: WEB400-request@xxxxxxxxxxxx
>>> Before posting, please take a moment to review the archives
>>> at http://archive.midrange.com/web400.
>>>
>>> --
>>> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
>>> list
>>> To post a message email: WEB400@xxxxxxxxxxxx
>>> To subscribe, unsubscribe, or change list options,
>>> visit: http://lists.midrange.com/mailman/listinfo/web400
>>> or email: WEB400-request@xxxxxxxxxxxx
>>> Before posting, please take a moment to review the archives
>>> at http://archive.midrange.com/web400.
>>>
>>>
>>> ___________________________________________
>>> This email has been scanned by iomartcloud.
>>> http://www.iomartcloud.com/
>>>
>>>  ________________________________
>>
>> NOTICE: The information in this electronic mail transmission is intended
>> by CoralTree Systems Ltd for the use of the named individuals or entity to
>> which it is directed and may contain information that is privileged or
>> otherwise confidential. If you have received this electronic mail
>> transmission in error, please delete it from your system without copying or
>> forwarding it, and notify the sender of the error by reply email or by
>> telephone, so that the sender's address records can be corrected.
>>
>>
>>
>>
>> --------------------------------------------------------------------------------
>>
>>
>> CoralTree Systems Limited
>> Company Registration Number 5021022.
>> Registered Office:
>> 12-14 Carlton Place
>> Southampton
>> Hampshire
>> SO15 2EA
>> VAT Registration Number 834 1020 74.
>>
>
> --
> This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
> list
> To post a message email: WEB400@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/web400
> or email: WEB400-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/web400.
>
>



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.