Is Oracle ADF always this hard to deploy? - oracle-adf

I've been working with Oracle PL/SQL and forms ¿for the last 20 years.
Like 8 years ago oracle people started to say their route map was that every new development should be done in Java with ADF and not in forms.
5 years ago we had to start a new project so we did it using that technology, because we had the feeling that sooner or later Oracle was going to stop suporting and publishing new versions of forms and reports.
The project was successful, but mantinance, deployment and configuring the developer's PC's is a lot hard and painful.
Starting with the fact that we have to deploy all the application every time we do an small change in any page, comparing with the fact that in forms we just have to deploy the altered form's FMX
And that is not the most unconfortable part, some times we deploy the applications EAR and we do not know why some classes are missing, so we have to compile everything again and deploy again.
In the last month we had to change our old Win 7 PC's for new ones, but I do not know why when I run the ant XML that should generate the EAR it does not find oracle.jbo.server package
Is this developing environmet always so hard and buggy ???

Although I understand this thread below is a bit old... but still a good source to refer it.
What is Oracle ADF?

Related

WPF Windows 7 VERY Slow to start

I am a solo developer at a small company. Recently, we undertook a complete re-write of all of our U.I.'s for configuring our windows service which is our core product. I'd been developing primarily for windows 8,8.1, and 10. We had seen no issues and the U.I. looks great. When deploying any of the applications to a windows 7 X64 with identical hardware as the other boxes we've used to test, we are seeing a near 30 second startup time when opening any application written in WPF dot net 4.5, regardless of complexity or lack there of (literally the same problem exists when showing a WPF form with nothing on it, just a blank form). This is extremely disheartening, as this makes them un-usable because one of these apps is a custom credential provider U.I. which is unreasonable to ask a user to wait that duration for the U.I. to be shown so they can log in.The other configuration utilities have this slow load time when running in user space so i do not believe it has to do with being launched from the credential provider COM object we've written. Can anyone shed some light on this issue please? I really don't want to go back to win forms because we really like the new look and feel that WPF provides. Is there some patch, update, or trick we can use to get a machine with plenty of horsepower to behave like its 8&10 counterparts?
All machines are identical i7 3.47 Ghz dual core with 8 gig of ram; which should be PLENTY sufficient.
UPDATE: Installing .net 4.7.2 has drastically sped up the launching from about 30 seconds to about 6 seconds. Still not acceptable, but on the right track i guess.
Thanks in advance.
I have put my windows 7 box onto the the internet, installed ALL updates, and installed .net 4.7.2 and it seems to have fixed the issue. Thanks for the suggestions.

Advice for components for a Multi Device program in Delphi Berlin

I have a Delphi 5 app that has too many 3rd party components to move to Delphi 10.1, so I am starting from scratch and need some advice from some Experts out there.
It basically is a database program that used DBISAM with a CSV importing and an I used Report Builder for building reports from the data. My goal is to create a multi-device application (Win64 and MacOS). I thought Fast Reports would work but I don't see it as an option for a multi-device program (even after downloading the Fast Reports FMX Install from Embarcadro for Berlin). I was going to use IBLite for a small database, but again don't see this installed. I was told by Embarcadero these components would work for the multi-device app I had in mind.
Any suggestions on where to start. Thanks.
I do not know for sure but you may not find a DBISAM driver for mobile platforms. You should also keep in mind that it is not good idea to load mobile device with CPU consuming tasks. I would suggest to use multi-tire approach. You should divide your application into several parts. In other words you should have a back-end server and a light-weight client implementing UI to your server.
I also think that you do not need to start from scratch. You may improve the existing application step-by-step. First of all you need to understand how to isolate your busyness logic from UI. You may do it even on Delphi 5.
Sorry my answer is too general, but your question does not have enough details too

Integration of different works by different people in moodle

We are developing a moodle site. We are a group of 5 people and each one is working on different module locally. But now we wwant to integrate the work of all in one machine or server. Is there any way to version control it or integrate it as the databse of each one is different because of different data. Please provide the solutuion as early as possible.
It is not completely clear as to whether you are separately working on the content of the site or the code for the new site, so I will attempt to answer both questions.
For content the easiest way to integrate it all together into one site is to use the Moodle backup and restore mechanism ( http://docs.moodle.org/26/en/Course_backup ) - backup each of the courses and then restore them onto the main site. If you have a lot of courses to transfer, then it may make more sense to write some code to automate certain aspects of this, but that can be quite a bit of work, so usually it is easier to just manually do the backup and restore.
For code the answer is Git. All the core Moodle code is version controlled via git. Make sure that each developer is working with their own clone of your main git repository (you can find the core Moodle repository at . Once they have committed each of their changes, then they can be pushed (to a central repository) or pulled to your production site. Read more at http://docs.moodle.org/dev/Git_for_developers
Note that if the code for each module has been written with the proper DB installation / upgrade code ( http://docs.moodle.org/dev/Upgrade_API ) then it should simply be possible to take the code from each of the developed modules, put them together into one codebase and then create a fully-working fresh install. Once you have that, you should be able to use backup and restore to transfer any required courses from the development servers to the live server.

version control/maintaining development local copies and working live copies and databases

This is a subject of common discussion, but through all my research I have not actually found a sound answer to this.
I develop my websites offline, and then launch them live through my hosting account.
I utilize codeigniter, and on that basis there are some fundamental differences between my offline and online copies, namely base urls and database configurations. As such I cannot simply develop and test my websites offline and then upload them as it requires small configuration changes which are easy to overlook and good lead to a none working live website.
The other factor is that when I am developing offline, I might add a database table or a column whilst creating some functionality. When I upload my local developments to my host, they often do not work as I have forgotten to upload the new database structure. Obviously this cannot happen - there cannot be any opportunity for a damaged or broken live website.
Further to this, I'd like to be able to have logs of my development - version control of sorts such that if i develop a feature, and then something else stops working I can easily look backwards to at least see the code changes which could have caused the change.
My fourth requirement is as follows: if i go away on holiday for a week without my development laptop, and then get a bug report, I have no way of fixing it. If i fix it on the live copy, not only is it dangerous, but i'll inevitably not update it on my local copy - as such when i update my live copy next time, that change will be lost. Is there a way that on any computer i can access my development setup, edit and test, launch to the live site, whilst also committing it such that my laptop local copy is up to date.
So yes.. in general im looking for a solution to make my development processes more efficient/suitable. Any ideas?
Thanks
Don't deploy by simply copying. Deploy by using a script (I use Apache Ant) that will automate the copy of specific files for each environment, the replacement of some values, etc.
This just needs rigor. Make a todo list while developing, and check that every modification on the server is done. You might also test the deploy procedure on a pre-production server which has an similar configuration as the production server, make sure everything is OK, and then apply the same, tested procedure on the production server
Just use a version control system. SVN or Git are two free candidates.
Make your version control server available from anywhere. If it's an open-source project, free hosting solutions exist. Of course, if you don't have a development computer wvailable, you'll have to checkout the whole project, and probably install some tools to be able to develop, test and deploy. Just try to make it as easy as possible, or always have your laptop available. If you plan to work, have your toolbox with you. If you don't plan to work, then don't work. When you have finished some development, commit to the server. When you go back to your laptop, update your working copy from the server.
Small additions and clarifications to JB
Use any VCS, which can work (in a good way) with branches - your local and prod systems are good candidates for separate branches, where you share common code but have branch-specific config. It'll require some changes in your everyday workflow (code in "test", merge finished with "prod", deploy /by tools, not hand/ only after merge...), but it's fair price
Changing of workflow, again. As JB noted - don't deploy by hand, don't deploy wrong branch, don't deploy "prod" before finished merge. But now build-tools are rather smart, you can check such pre-condition inside builder
Just use VCS, maybe DVCS will be somehow better. I say strong "No-no" for Git as first VCS, but you have wide choice even without it - SVN (poor branch|merge comparing to DVCS), Bazaar (not a tool of my dream, but, who knows), Mercurial, Fossil SCM, Monotone
Don't work on live, never do anyting outside your SCM. One source of changes is a rule of happy developer. Or don't work at all at free-time, or have codebase always reacheable for you (free code-hosting /GoogleCode, SourceForge, BitBucket, Github, Assembla, LaunchPad/ or own server), get it as needed, change, save, deploy

Auto update for WinForms application

When creating an auto updating feature for a .NET WinForms application, how does it update the DLLs and not affect the currently running application?
Since the application is running during the update process, won't there be a lock on the DLLs (because those DLLs will have to be overwritten during the update).
Usually you would download the new files into a separate area. Then shutdown and restart and at startup you look for and use the new files if found. Always keeping a last known working version on the side so that the user can revert to something that definitely works if the download causes problems.
ClickOnce is a good technology from Microsoft that does this for you and you can use it directly from Visual Studio 2008.
You'll have to shutdown your application and restart it, as other people have already commented.
I wrote an open-source code to do just that in a transparent mode - including an external update application to do the actual cold update. See http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/
The code is at http://github.com/synhershko/NAppUpdate (Licensed under the Apache 2.0 license)
I have a seperate 'launcher' application that checks for updates via a web service. If there are updates, it downloads them and then executes my application, which is in a seperate assembly.
The other alternatives are using things like ClickOnce, or downloading the files to a seperate area and restarting the app, as someone else mentioned.
Be warned about ClickOnce, though - it's not as flexible as it sounds. And if you deploy to a system that requires elevating your program to a higer security level to run, you might run into problems if you don't have a certificate for your app installed. I found it very difficult to get straight answers on the Internet to things like certificate management when it comes to ClickOnce. If you have a complex app, you may want to just roll your own updater, which is what I ended up having to do.
If you publish via ClickOnce, all of that tends to be handled for you. It has it's own pro's and con's but usually easier than trying to code it all yourself.
Both Wikipedia and 15seconds have decent info on using ClickOnce, how it works, etc.
As others have stated, ClickOnce isn't as flexible as rolling your own solution but it is a LOT less complicated. It has a small learning curve at first, but with pretty much everything bundled into Visual Studio and the use of Wizards, it usually doesn't take long to stumble onto a working solution.
As deployments get more complex (i.e. beyond than just having prerequisites or application code that needs updating) and you need to do a lot of post-install or pre-install tasks, there are things like WiX which give you somewhat of a hybrid solution between Windows Installer and ClickOnce, with the cost of flexibility being a much steeper learning curve.
The only reason I try to avoid custom installers is that you end up spending way too much time trying to get it just right to handle a bunch of different "What If" scenarios...
These days Windows can do such updates automatically for you with AppInstaller if your app is packaged in the MSIX package.
It downloads the new version of the app in another folder inside ProgramFiles\WindowsApps, then when a user runs the app via the start menu, the system knows what folder it should use. The previous version gets deleted when not in use.
If you want to know how to package your app this way I collected my findings in this answer.

Resources