Flat file database for CD - database

I have a .csv file with about 5-8 columns and about 1mil. rows and I would like to have it stored in simple flat file database.
Overall this should be a standalone application (one file with *.exe, installable under Windows). The application would allow basic search on the 5-8 columns. There should be very simple user interface.
This application is to be written on CD and distributed to users so should be fairly simple to administer/use.
Questions:
1) Is there already some software that would allow me to build such a application?
2) If not which program would suit best to build such a application?
I would task a programmer to build such a application if I would have clue as to what program to use (finding programmer based on the best program you would recommend).
Again, very simple application, light weight with no additional unnecessary options, dependencies etc.

My Visual Database (http://myvisualdatabase.com/)
from site:
A simple development environment databases, without the help of
specialists and programming skills, you will create a Windows
application databases. It can be as simple telephone directory and
accounting system in your business.
The result of your work will be a Windows application that does not
require installation and third-party components and the ability to
work directly from USB Flash drive.
This software uses sqlite.
Here you can find example, how to import csv file
http://myvisualdatabase.com/forum/viewtopic.php?id=1448
also for import you can use SQLite Studio

Related

Serilog GUI for desktop

Serilog is a logging library that has Sinks (adapters) to many log viewing/analysis services (like Glimpse or Loggly). That is cool but all of them require browser to see the logs.
Is there a ready GUI control for desktop applications (using winforms, WPF, etc..) for log entries that works with serilog?
P.S. We can take IObservable serilog Sink and create our own "LogGrid" but we would prefer to not to reinvent a bicycle.
It depends on where you log the messages from Serilog. You can log to numerous "sinks" so most GUI tools will depend on what sink you are using. The list of provided sinks for Serilog is here: https://github.com/serilog/serilog/wiki/Provided-Sinks
Some options include:
Log Parser
If you are using some file-based sinks, then you can use the Microsoft Log Parser available here: https://www.microsoft.com/en-us/download/details.aspx?id=24659
From the site:
Log Parser 2.2 is a powerful, versatile tool that provides universal
query access to text-based data such as log files, XML files and CSV
files, as well as key data sources on the Windows operating system
such as the Event Log, the Registry, the file system, and Active
Directory.
Log Parser Lizard GUI
If you want a shiny UI to search the log files using log parser, check out Log Parser Lizard GUI here: http://lizard-labs.com/log_parser_lizard.aspx
From the site:
Log Parser Lizard is a GUI for Microsoft Logparser, definitely the
best one available on the market today. Log Parser is a very powerful
and versatile query software tool that provides universal query access
(using SQL) to text-based data, such as log files, XML files, and
TSV/CSV text files, as well as key data sources on the Microsoft
Windows operating system, such as the Windows Event Log, IIS log, the
registry, the File System, the Active Directory services and much
more.
Seq
This does NOT meet your "non-browser based UI" requirement, however Seq does a great job of providing a web-based interface to search and analyze logs with built-in support for Serilog. It is available here: https://getseq.net/
From the site:
Seq is the easiest way for .NET developers to capture, search and
integrate structured log events. Compared with traditional plain-text
logs, structured logs cut through the complexity of distributed and
asynchronous applications.
Have a look at https://github.com/RolandPheasant/TailBlazer to see how Roland did it.

Multiple-domain security with SSDT .sqlproj projects?

I'm doing a small pilot project trying to implement Sql Server Data Tools sqlproj projects in order to better bring our databases under source control. In my organization, we have separate no-trust domains for test environments of various purposes, so these domains of course have their own isolated active directory accounts.
The documentation is still somewhat sparse and I don't really know where to go for more information on this toolset, especially considering the extraordinary amount of churn in Visual Studio's history of database assets.
So far, the only idea I've really had would be to make separate sqlproj projects specifically for the security objects each separate domain, separate from the other schema objects. My hope is that somehow I can tie my actual database schema to those at deploy time and also to somehow switch which security project I'm using in the build. I have no idea if that's feasible though.
Has anyone that uses Visual Studio sqlproj projects had to deal with this? Is there a best practice for this kind of thing?
If you have different settings for each environment then the easiest is to either leave them out and not delete them when you deploy or to have a post deploy script that sets them up manually.
Normally for handling different configurations I would suggest using sql cmd variables (on the properties of the project there is a page for setting these up) but when you create a login you cannot use a variable to create it so that falls over!
There is an example on how to setup a post deploy wrapper for just this case:
http://schottsql.blogspot.co.uk/2013/05/ssdt-setting-different-permissions-per.html
Good luck with ssdt, there are some strange quirks but it enables so much!

Licensing WPF, Silverlight and WP7 assemblies

I am looking for a solution to license a WPF, Silverlight and WP7 assembly. The assembly in question is a chart control which has a single API for use across platforms. I am in the process of creating a separate MSI for each platform (WPF, SL, WP7) which users will be able to download and install. This will register the assemblies in their GAC for development use.
What I would like to do is ensure that a single development license is only used by a single developer. It doesn't have to be super secure, just enough to deter would-be hackers. Ideally a solution that covered all three platforms would be beneficial.
I already have a cross-platform obfuscator which I am very pleased with. Shame this doesn't include licensing!
Edit: Additional requirements are that I will be allowing users to download updates for up to one year from purchase date, however the assemblies they purchase will be available for their use indefinitely whether or not they update. Assemblies are to be redistributed so any licensing model must be redistributable on WPF/SL/WP7 platforms.
Your suggestions / comments welcome.
Best regards,
For your requirements that the licencing methodology 'will "do the job" and prevent low-level licence abuse' I would personally recommend not getting too fancy; that is, to avoid the use of web-activated/maintained licencing. My advice would be similar to the approach outlined here.
Select a symmetric encryption algorithm using the one of the .NET libraries as described in the link above.
Create the required encryption key using a random generator (if you contact me I am happy to share a piece of code I developed to generate a variety of random strings/keys for any required key size), there are also .NET classes to help you do this yourself by generating pseudo-random numbers (RNGCryptoServiceProvider).
Transform/’custom-hash’ the key to provide a new 'hashed encryption key'.
Use this key to generate an Initialisation Vector (IV) and encrypt your licence file.
How you now deploy the application (in terms of licencing) is up to you. The two methods below will work for all three application types above and will offer some degree of consistency for the licencing of each of your products. The above method uses two files for licencing. 'ProductKey.myExtension' and 'LicenceFile.myOtherExtension'. The first contains the randomly generated key, that will be 'hashed'/transformed in the same way as in the licence generator application (you will need a separate (small) application to ‘cut’/create the licence files). The second is the encrypted file with user info, licence period etc.
A. You could now provide an install package for your application that will install your application in the relevant directory (i.e. C:\Pogram Files etc.) without providing the licence files, in which case you can deploy the licence files with a licence installer. The licence could then separately be installed for each user employing `Environment.SpecialFolder's to ensure each user has their own licence (of course this would assume that the 'Administrator' installed the application in the first instance for all users and that the licence install pack would be run on a user-by-user basis). Note: I am currently not familiar with WP7 applications and the specifics in this case.
B. The second way would be to allow individual users to install the application, and to install the relevant licence files upon the applications installation.
I have deployed several WinForm applications using this methodology after an extensive research period and it seems to work well. I hope this is of some help.

Legacy File Schema - Reverse Engineering

I'm currently in the process of converting over 20k database tables from Corel Paradox 4.0 format (DOS Based, with a .db extension) to SQL databases, and rather than using off the shelf software, I'm currently looking into using a light scripting language like Python (or Ruby or PHP, but Python is ideal since I'm working on a Windows desktop setup -- although I could boot one of my Linux VM's for development if needed) for me to write a set of code to simply pull all the .db files in a directory and output a set of .sql databases in just one click.
Now while I know PHP has a limited library built to specifically handle Paradox files, when it comes to Python, Ruby, and other languages I haven't had much luck.
My question now is, when it comes to writing a script to convert formats, how do I go about defining the syntax of the file to be inputted? For example, when it comes to .exe, .zip, .msi, and so on, is there a single format/syntax published for developers to follow, and if so, what are the most comprehensive/solid sources to check?
I currently have a copy of Paradox for Windows which I can use to view the fields and tables, but that isn't helping me with my scripts as it only shows a high-level overview.
Thanks very much for any information,
Why do not you want to use already existing software? For example, a quick googling yielded this toolset (I do not have Paradox databases to test, but it seems to compile correctly).

Which one is better: DMG or PackageMaker

Here's my requirement:
1. I want my installable to have a custom license agreement
2. run another package as part of the installation
3. let the user have an option of running the app on start-up
What should I use, create a dmg or use PackageMaker available with xcode? Are there any good web pages showing how to use PackageMaker?
Thanks.
They serve different purposes:
DMG (disk images) is just a container file format to solve age-old issues with multi-fork files and transfer protocols and intermediate hosts that can't handle them, by not relying on them in the first place. In addition, the disk images can use internal compression. Your users will thank you for not confusing them with file wrapped in file wrapped in file (although disk images themselves take some explaining initially).
PackageMaker is a full-fledged installer package builder. You can customize the installation process and locations, do sub-installations and pretty much anything else you could possibly need. If your installation entails more than just dragging and dropping an application bundle into place, this is the one to go with.
From your requirements, the choice seems obvious. Since an installer package is itself a bundle, I'd say: create an installer package with PackageMaker and put it in a compressed disk image. Distribute the disk image to your users. It just provides a nicer experience.

Resources