Suite

Comment créer un front-end simple pour une base de données PostGIS ?


Mon organisation collecte de nombreuses données de surveillance environnementale (débit des cours d'eau, chimie de l'eau, etc.) dont la plupart sont actuellement stockées dans Excel. J'aimerais tout mettre dans une base de données - probablement PostGIS - mais j'ai besoin que les données soient accessibles aux personnes n'ayant aucune connaissance des principes de base de données (pas de SQL ou quelque chose comme ça).

J'aimerais avoir une sorte de frontal simple pour ma base de données où l'utilisateur sélectionne une station de surveillance d'intérêt, un type variable (par exemple, une concentration en nitrates dans un ruisseau) et un intervalle de temps. La base de données renverrait alors les données demandées au format csv, que l'utilisateur pourrait télécharger sur son ordinateur. Dans un monde idéal, le front-end afficherait une carte cliquable de toutes les stations de surveillance, mais si c'est plus facile, une liste déroulante des sites disponibles conviendrait pour commencer. Je suppose que ce front-end serait probablement un site Web, mais ce n'est pas obligatoire.

À quel point est-ce difficile, s'il vous plaît, et quelles sont mes différentes options ? Je ne suis en aucun cas un expert en bases de données, mais j'ai une solide expérience en SIG de bureau et je suis heureux d'écrire des scripts Python simples et de jouer avec les géodatabases personnelles PostGIS, SpatiaLite et ESRI. Je n'ai jamais fait de développement web ou de SIG web, mais j'ai envie d'apprendre.

J'ai passé une partie de la journée d'hier à explorer certains des excellents didacticiels OpenGeo. Cette approche semble prometteuse, et au moins je peux maintenant voir comment afficher mes données sur un site Web. Ce qui est moins évident pour moi, c'est comment je laisse l'utilisateur interroger la base de données et obtenir des résultats.

Ma question: À quel type de structure logicielle devrais-je penser pour un projet comme celui-ci ? par exemple.

PostGIS + GeoServer + Autre chose ?

Quelles autres options sont disponibles que je devrais rechercher ?

Une solution simple mais fonctionnelle serait privilégiée dans un premier temps : si je peux monter un prototype de base, je peux l'utiliser pour justifier de passer plus de temps à apprendre à faire les choses « correctement ». L'open source est également une exigence car je n'ai pas de budget pour cela jusqu'à ce que je puisse prouver certains avantages.

Merci beaucoup!


Si vous connaissez déjà Python et SQL, il ne serait pas trop difficile de créer un site Web à l'aide d'un framework Web Python. Deux simples - cherry.py et web.py - viennent à l'esprit. Je pense qu'apprendre à se familiariser avec le mappeur relationnel objet de Django pourrait être plus de travail qu'il n'en vaut la peine.

Python a une bibliothèque appelée psycopg2 (http://initd.org/psycopg/, et un tutoriel : http://wiki.postgresql.org/wiki/Psycopg2_Tutorial) qui vous permet d'exécuter facilement des requêtes sur PostGRESQL/PostGIS. Il dispose également d'un module CSV (http://docs.python.org/library/csv.html) qui facilitera la création de votre CSV à partir de ladite requête.

Comme d'autres personnes l'ont dit, la création d'une carte sur le front-end ajoute beaucoup de complexité. Vous aurez besoin de quelque chose comme OpenLayers pour afficher les cartes, et quelque chose comme MapServer ou GeoServer pour créer des images cartographiques à partir de votre base de données (ou d'autres sources de données). Ce serait probablement mieux comme deuxième étape.

Pour l'instant, "tout" ce dont vous avez besoin est une page Web : un formulaire qui vous permet de sélectionner les paramètres de requête que vous souhaitez. Lorsqu'ils cliquent sur « soumettre », les paramètres de la requête sont envoyés au serveur (Apache serait un bon choix), qui exécute ensuite votre script, qui interroge la base de données, crée un fichier CSV approprié et le renvoie au navigateur. Simple comme bonjour ;)


GéoDjango

Il est assez facile à installer et offre des fonctionnalités de base. C'est Python, donc au moins vous êtes familier avec le langage. Cela peut être excessif pour vos besoins. Mais, si jamais vous souhaitez développer le site, vous disposez d'un cadre mature sur lequel construire.


Si vous ne voulez/n'avez pas besoin de créer une carte. Tout ce dont vous avez besoin est un serveur Web et un langage de programmation (je préfère Apache car il est facile à utiliser et à configurer, mais il existe d'autres options), puis Postgres avec PostGIS ou une autre base de données.

Si vos fichiers Excel sont bien formatés, l'importation des données dans la base de données devrait être simple. Vous pouvez écrire un script qui peut générer les instructions INSERT. Les requêtes que vous décrivez semblent également être gérables.

Si/quand vous voulez faire la partie cartographie, Apache, GeoServer et OpenLayers seraient une solution simple et gratuite. GeoServer (comme vous le savez) peut facilement utiliser PostGIS pour WMS ou un autre format de sortie. Tout ce que vous avez à faire est d'ajouter un magasin qui se connecte à PostGIS, puis d'ajouter des couches à partir des tables dans PostGIS.

D'autres outils de cartographie gratuits que vous pouvez consulter seraient Mapserver et MapGuide. MapGuide Open Source fait des trucs assez sympas mais c'est plus compliqué et sa documentation est un peu en retard.

MySQL a également une extension Spatial, mais il n'a pas autant de fonctionnalités et de fonctions spatiales que PostGIS.

Si vous êtes familier avec python je regarderais GeoDjango… Je n'y connais pas grand chose personnellement mais j'ai entendu de bonnes choses


Vous pouvez trouver un aperçu des problèmes de conception et de développement d'applications de cartographie Web, en plus du code source entièrement documenté pour une application de cartographie Web environnementale basée sur Google Maps et la base de données spatio-temporelle PostgreSQL/PostGIS, dans ma thèse de maîtrise en informatique relativement récente : "Conception et développement d'un prototype abordant la gestion, l'analyse et la livraison de données vectorielles environnementales spatio-temporelles en utilisant la technologie Open Source. Cadre général et étude de cas portant sur la gestion des eaux souterraines dans une zone côtière"

La thèse peut être téléchargée sur http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf


Utiliser C# pour créer une interface pour une base de données simple

Jusqu'à présent, je n'ai utilisé que C# pour créer des applications de console. Ce que je voudrais faire ensuite, c'est créer une application c# qui pourrait ouvrir une base de données à une table (probablement sqlite) et présenter les données sous forme de table à l'utilisateur. J'aimerais que l'utilisateur puisse faire des choses comme trier par colonne, rechercher, etc. J'ai quelques questions concernant l'interface graphique.

Quelle serait la technologie .Net appropriée à utiliser pour le front-end de l'interface graphique ? WinForms ?

J'apprécierais vraiment un lien vers un tutoriel ou un exemple concret de faire quelque chose de similaire


Le guide étape par étape Dead-Simple pour les développeurs frontaux pour se mettre en route avec Node.JS, Express et MongoDB

Ce tutoriel a été testé avec Node.js v10.15.x, MongoDB v4.0.x et Express v4.16.x. Il ne fonctionnera pas correctement avec les anciennes versions sur certains systèmes.

Ce tutoriel a été initialement publié sur cwbuechler.com et ne fait pas inclure un composant vidéo.

Mis à jour le 28 février 2020 !

Introduction

Il existe environ cent millions de tutoriels sur le Web pour faire fonctionner une application "Hello, World!" avec Node.js. C'est bien! C'est particulièrement bien si votre objectif est de saluer le monde, puis d'abandonner votre carrière sur le Web et de passer le reste de votre vie en tant que jockey ou quelque chose comme ça. Cela ne décrit pas vraiment la plupart d'entre nous, alors nous cherchons d'autres tutoriels.

D'après mon expérience, les didacticiels sur le "niveau suivant" semblent environ 30 niveaux plus avancés. Nous passons de "Hello, World!" à la création d'un système de blogs complet avec des commentaires. Ce qui est également très bien, mais la plupart du temps, ces didacticiels supposent que le lecteur a fait tout un tas de bricolages intermédiaires, et ils vous abandonnent souvent un tas de grandes fonctions en même temps. J'ai tendance à mieux apprendre en faisant beaucoup de petits pas intermédiaires, et je ne pense pas être le seul.

Je ne suis pas le seul, non ?

Eh bien, bonne nouvelle à tous ! J'ai fait le violon et lu un tas de tutoriels et j'ai crié à mon invite de commande jusqu'à ce que les choses fonctionnent enfin. J'ai un projet Web opérationnel qui utilise Node.JS, le framework Express, le préprocesseur HTML EJS et MongoDB pour les données. Je peux lire et écrire à partir de la base de données. À partir de là, le ciel est la limite.

Voici l'affaire : je vais vous montrer comment mettre en place tout cela. Je suppose que vous êtes un développeur front-end qui connaît assez bien HTML5/CSS3/JavaScript pour que je n'aie pas à les expliquer. Si c'est vous, alors cela devrait être un apprêt solide.

Votre application sera jolie, elle se connectera à une base de données, elle obtiendra des résultats et fera des choses avec ces résultats. Ensuite, pour le coup, nous allons également le faire enregistrer des données dans la base de données. À travers tout cela, j'expliquerai ce que fait le code et comment l'écrire, au lieu de simplement vous donner des fonctions massives à regarder. Nous allons passer de rien, même installé, à une application Web basée sur une base de données écrite dans un langage que vous comprenez parfaitement et à la base nécessaire pour intégrer des fonctionnalités supplémentaires à votre application. Et nous le ferons en environ 60 minutes d'installation et de temps de codage. C'est génial ? Je soumets que c'est le cas.

Partie I – 15 minutes d'installation

Si vous partez vraiment de zéro, il faut un peu de temps pour que tout soit opérationnel. Rien de tout cela n'est difficile. J'exécute Windows 10 sur ma machine principale, donc ce sera légèrement différent pour ceux sur un Mac ou Ubuntu ou un autre système *nix, mais c'est principalement la même chose dans tous les cas.

Étape 1 - Installez Node.js

C'est vraiment facile. Accédez au site Web Node.js et cliquez sur le gros bouton vert Installer pour la version LTS (stable à long terme). Il détectera votre système d'exploitation et vous fournira le programme d'installation approprié. Exécutez le programme d'installation. Voilà, vous avez installé Node.js et, tout aussi important, NPM, qui vous permet d'ajouter toutes sortes de choses intéressantes à Node rapidement et facilement.

  • Ouvrir une invite de commande
  • cd dans le répertoire dans lequel vous souhaitez conserver vos applications de test (pour les besoins de ce tutoriel, C: ode).

Étape 2 - Installer Express Generator

Maintenant que Node est en cours d'exécution, nous avons besoin du reste des éléments que nous allons réellement utiliser pour créer un site Web fonctionnel. Pour ce faire, nous allons installer Express, qui est un framework qui prend Node d'une application barebone et le transforme en quelque chose qui se comporte plus comme les serveurs Web avec lesquels nous avons tous l'habitude de travailler (et en fait un peu plus que ce). Nous devons commencer par Express-Generator, qui est en fait différent d'Express lui-même… c'est une application d'échafaudage qui crée un squelette pour les sites express. Dans votre invite de commandes, tapez ce qui suit :

Commande C: ode>

Le générateur doit s'installer automatiquement, et puisqu'il (comme tous les packages installés avec -g) réside dans votre répertoire d'installation principal de NPM, il devrait déjà être disponible dans votre chemin système. Utilisons donc notre générateur pour créer l'échafaudage d'un site Web.

Étape 3 - Créer un projet express

Nous allons utiliser Express et EJS, mais pas le préprocesseur Stylus CSS (que les gens utilisent parfois dans cette pile). Nous allons juste utiliser du CSS pour le moment. Nous devons utiliser EJS ou un autre moteur de modélisation pour accéder à nos données basées sur Node/Express. EJS n'est pas difficile à apprendre si vous connaissez déjà le HTML, car ce n'est que du HTML avec du JavaScript intégré. Express est par défaut Jade, mais nous ne l'utilisons pas car a) il est déprécié en faveur de la nouvelle version, qui s'appelle Pug, et b) il est basé sur l'indentation et je n'aime pas le balisage basé sur l'indentation . Il est trop facile pour un onglet ou un espace supplémentaire accidentel de casser toute votre page.

Une note rapide sur l'indentation : tout ce qui est décrit dans ce didacticiel a été normalisé en retraits à 2 espaces, car cela devient la norme dans le monde JavaScript. Si vous souhaitez utiliser quatre espaces, ou des onglets réels, cela me convient parfaitement.

Quoi qu'il en soit, toujours dans c: ode ou partout où vous stockez vos applications de nœud, tapez ceci :

Commande C: œud

Appuyez sur Entrée et regardez-le partir. Vous verrez quelque chose comme ceci :

Commande C: œud

Étape 4 - Modifier les dépendances

ASSUREZ-VOUS DE METTRE LE CD DANS VOTRE DOSSIER nodetest. OK, maintenant nous avons une structure de base là-dedans, mais nous n'avons pas tout à fait terminé. Vous noterez que la routine express-generator a créé un fichier appelé package.json dans votre répertoire nodetest1. Ouvrez-le dans un éditeur de texte et il ressemblera à ceci :

C: ode odetest1package.json

Il s'agit d'un fichier JSON de base décrivant notre application et ses dépendances. Nous devons y ajouter quelques éléments. Plus précisément, les appels à MongoDB et Monk. Nous pourrions le faire en éditant notre fichier… mais nous pouvons également installer ces dépendances avec NPM et il les ajoutera automatiquement. Revenez à votre ligne de commande et tapez ce qui suit :

Commande C: ode odetest1

Cela ajoutera ces deux dépendances à notre fichier package.json (vous pouvez revenir à votre éditeur de texte pour vérifier). Il les installera également pour les utiliser dans notre application… mais pour le moment, ce sont les seulement deux dépendances que nous avons installées, car il y a une étape importante lors de la configuration avec Express que nous n'avons pas encore faite.

Étape 5 - Installer les dépendances

Maintenant, nous avons défini nos dépendances et nous sommes prêts à partir. Notez que de nouvelles versions des modules NPM sont fréquemment déployées. Les versions répertoriées dans ce didacticiel ont fait leurs preuves si vous utilisez les dernières versions, j'ai peur que vous soyez seul.

Revenez à votre invite de commande et tapez ceci :

Commande C: ode odetest1

Cela lira le fichier JSON et installera tous les éléments répertoriés dans l'objet de dépendances qui ne sont pas encore installés (oui, y compris Express - nous avons installé le générateur globalement, mais nous devons toujours installer le module réel dans ce projet particulier). Vous pouvez recevoir quelques avertissements de vulnérabilité selon les versions, mais vous pouvez les ignorer. Nous ne le déployons nulle part, donc la sécurité n'est pas vraiment un problème. Quoi qu'il en soit, au moment de la date de "dernière mise à jour" ci-dessus, il n'y a aucune vulnérabilité connue dans le projet.

Une fois que NPM a suivi son cours, vous devriez avoir un répertoire node_modules qui contient toutes nos dépendances pour ce didacticiel. Cela créera également un fichier appelé package-lock.json que vous pouvez ignorer complètement. C'est important, mais seulement si vous êtes un développeur Node expérimenté qui crée des applications de niveau production. Vous avez maintenant une application entièrement fonctionnelle prête et en attente d'exécution, alors testons notre serveur Web ! Tapez ce qui suit :

Commande C: ode odtest1

Appuyez sur Entrée et vous obtiendrez ceci :

Console de nœud

Tout fonctionne ? Génial! Ouvrez un navigateur et dirigez-vous vers http://localhost:3000 où vous verrez une page de bienvenue sur Express.

Vous exécutez maintenant votre propre serveur Web Node JS, avec le moteur Express et le préprocesseur HTML EJS installés. Pas si dur, hein ?

Partie 2 - OK, bien, faisons "Bonjour tout le monde!"

Lancez votre éditeur de texte ou IDE préféré. J'aime et j'utilise à la fois Sublime Text et VS Code. Pointez-le sur votre répertoire nodetest1 et ouvrez app.js . C'est en quelque sorte le cœur de votre application. Pas une grosse surprise là-bas. Voici un aperçu de ce que vous allez voir :

C: ode odetest1app.js

Cela crée un ensemble de variables JavaScript de base et les lie à certains packages, dépendances, fonctionnalités de nœud et routes. Les routes sont un peu comme des contrôleurs dans cette configuration - elles dirigent le trafic et contiennent également une logique de programmation (vous pouvez établir une architecture MVC plus traditionnelle avec Express si vous le souhaitez. Cela sort du cadre de cet article). À l'époque où nous avons mis en place ce projet, Express a créé tout cela pour nous. Nous allons totalement ignorer la route utilisateur pour le moment et travailler uniquement dans la route de niveau supérieur (contrôlée par c: ode odetest1 outesindex.js ).

C: ode odetest1app.js

Celui-ci est important. Il instancie Express et lui attribue notre variable d'application. La section suivante utilise cette variable pour configurer un tas de trucs Express.

C: ode odetest1app.js

Cela indique à l'application où trouver ses vues, quel moteur utiliser pour rendre ces vues (EJS) et appelle quelques méthodes pour que les choses soient opérationnelles. Notez également que la dernière ligne du deuxième bloc indique à Express de servir des objets statiques à partir du répertoire /public/, mais pour qu'ils semblent en fait provenir du niveau supérieur (il le fait également avec le répertoire views). Par exemple, le répertoire images est C: ode odetest1publicimages … mais il est accessible à l'adresse http://localhost:3000/images .

Ce dernier bloc, les deux dernières lignes, est important. Il indique à Express que les requêtes à http://localhost:3000/ doivent utiliser le routeur d'index (qui est défini en haut du fichier), et les requêtes à http://localhost:3000/users doivent utiliser les utilisateurs fichier de routeur.

C: ode odetest1app.js

Ce sont des gestionnaires d'erreurs pour le développement et la production (et 404 & 39). Nous ne nous soucions pas vraiment de la différence entre ces deux-là pour le moment, mais fondamentalement, si votre application est en mode développement, vos erreurs vous donneront plus d'informations. Évidemment, vous ne voulez pas imprimer une trace de pile sur un site de production que n'importe qui sur le Web peut voir.

C: ode odetest1app.js

Une partie essentielle de Node est que fondamentalement tous les modules exportent un objet qui peut facilement être appelé ailleurs dans le code. Notre application principale exporte son objet d'application.

Maintenant, faisons des trucs. Nous n'allons pas simplement coller "Hello, World!" sur notre page d'index. Au lieu de cela, nous allons utiliser cela comme une opportunité d'en apprendre un peu plus sur les routes et d'examiner comment EJS fonctionne pour assembler des pages.

Nous allons commencer par ajouter une nouvelle directive app.use à app.js . Trouvez la section qui ressemble à ceci :

C: ode odetest1app.js

Ces directives indiquent à Express quels fichiers de route utiliser. Maintenant, normalement, je préconise de configurer des fichiers de route séparés pour différentes parties de votre application. Par exemple, le fichier de route des utilisateurs peut contenir des routes pour ajouter des utilisateurs, les supprimer, les mettre à jour, etc., tandis qu'un nouveau fichier de route appelé "locations" peut gérer l'ajout, la modification, la suppression et l'affichage des données de localisation (dans une application pour laquelle obligatoire). Dans ce cas, pour simplifier les choses, nous allons tout faire dans le routeur d'index. Cela signifie que vous pouvez complètement ignorer la ligne /users.

N'oubliez pas que l'échafaudage Express a déjà défini la variable routes et l'a pointée vers le routeur d'index. Nous allons ajouter une méthode helloworld à ce routeur qui affichera une page différente de celle par défaut. Dans votre éditeur de texte, ouvrez votre dossier routes, recherchez index.js et ouvrez-le. Il ressemblera à ceci:

C: ode odetest1 outesindex.js

Assez clairsemé, non? Fondamentalement, nous avons besoin de notre fonctionnalité Express, puis attachons une variable "router" à la méthode du routeur Express&39s, puis utilisons cette méthode lorsqu'une tentative HTTP est effectuée pour obtenir le répertoire de niveau supérieur de notre site Web. Enfin, nous exportons notre fonction de routeur vers notre application.

Nous pouvons facilement cloner cette fonction pour une autre page, alors faisons-le. Au bas du fichier, il suffit au dessus la ligne module.exports, ajoutez ce code :

C: ode odetest1 outesindex.js

C'est tout ce qu'il faut pour gérer le routage de l'URI, mais nous n'avons pas de page réelle pour que res.render… restitue. C'est là qu'intervient EJS. Ouvrez votre dossier de vues, puis ouvrez index.ejs . Avant de faire autre chose, enregistrez-le sous helloworld.ejs .

Maintenant, regardez le code :

C: ode odetest1viewshelloworld.ejs

C'est assez simple. Notez l'utilisation de la variable "title" que nous avons définie ci-dessus, dans notre route index.js. Cela signifie que nous n'avons même pas besoin de modifier le texte pour qu'il affiche des éléments différents de la page d'accueil. Mais changeons-le quand même en :

Enregistrez le fichier, accédez à votre invite de commande, ctrl-c (ou cmd-c ) pour tuer votre serveur s'il est déjà en cours d'exécution, puis tapez :

Commande C: ode odetest1

Afin de redémarrer le serveur. Au fait, cela semble être le bon moment pour le mentionner : les modifications apportées aux modèles EJS ne nécessitent pas de redémarrage du serveur, mais en gros, chaque fois que vous modifiez un fichier js, tel que app.js ou les fichiers de route, vous devez redémarrer pour voir changements.

SO … avec le serveur redémarré, accédez à http://localhost:3000/helloworld et profitez du texte complètement stupide qui s'affiche :

D'ACCORD! Alors maintenant, notre routeur nous achemine vers notre vue, que nous regardons. Faisons un peu de modélisation. Je vais vous donner un moment si vous avez besoin de vous coiffer ou de vous maquiller.

Partie 3 – Créez notre base de données et lisez des éléments à partir de celle-ci

Étape 1 - Installez MongoDB

Nous divisons cela en deux parties : Windows et Mac. Nous allons commencer par Windows.

Nous laissons un peu notre éditeur de texte et revenons à notre invite de commande. Eh bien, nous allons d'abord dans notre navigateur Web, en le pointant sur http://mongodb.com/ et en téléchargeant Mongo. Vous ne voulez pas du bouton "try free", qui va pousser leur serveur d'entreprise ou serveur cloud sur vous, dont vous n'avez pas besoin pour le développement local. Au lieu de cela, survolez "products" et cliquez sur "MongoDB Server" - cela vous mènera à la page de téléchargement du serveur communautaire. Il détectera automatiquement votre système d'exploitation et vous donnera le lien de téléchargement approprié.

Cliquez sur le bouton de téléchargement et exécutez le programme d'installation. Si vous utilisez Windows, il vous proposera d'installer une interface graphique appelée Compass. Vous pouvez le faire si vous le souhaitez, mais nous ne l'utiliserons pas dans ce didacticiel. Il vous demandera également si vous souhaitez enregistrer MongoDB en tant que service. La réponse est "oui" car cela rend tout le reste beaucoup plus facile. Le serveur de base de données s'exécutera simplement en arrière-plan chaque fois que votre machine est allumée (en utilisant un minimum de ressources, ne vous inquiétez pas) et vous n'aurez pas besoin de le démarrer à chaque fois.

Une fois qu'il est installé, vous êtes prêt.

Si vous êtes sur OSX, il est un peu plus compliqué de configurer MongoDB en tant que service d'arrière-plan, mais cela peut être fait. Je recommande d'utiliser Homebrew pour faire l'installation. Si vous n'êtes pas familier avec Homebrew, ce n'est pas grave. Il est livré avec OSX et vous n'avez pas vraiment besoin de faire quoi que ce soit pour le configurer. Dirigez-vous vers votre terminal et tapez ce qui suit :

Terminal

Cela récupérera toutes les dernières informations dont Homebrew a besoin pour s'assurer qu'il installe les bonnes choses. Maintenant, installons MongoDB avec cette commande :

Terminal

Laissez-le fonctionner et il installera ce dont vous avez besoin. Étape suivante, créez un répertoire dans lequel stocker vos données. MongoDB lui-même suggère /data/db car c'est ce que MongoDB recherche par défaut. J'irais avec ça aussi. Voici ce qu'il faut saisir :

Terminal

Parce que vous avez utilisé Homebrew pour installer MongoDB, vous pouvez assez facilement démarrer MongoDB en tant que service en tapant :

Terminal

Une fois qu'il est installé et démarré, nous pouvons passer à l'utilisation !

Étape 2 – Exécutez mongo

À présent ouvrir une nouvelle invite de commande ou une nouvelle fenêtre de terminal parce que nous allons parler à ce serveur de base de données tout en exécutant notre serveur Express. Dans cette nouvelle fenêtre, nous allons utiliser un utilitaire fourni avec MongoDB, appelé "Mongo". C'est essentiellement un moyen d'accéder à votre base de données à partir de la ligne de commande. Tapez simplement ceci :

Terminal

Vous verrez quelque chose comme ce qui suit :

Console Mongo

Très bien, vous avez MongoDB opérationnel et vous vous y êtes connecté avec le client. Nous utiliserons ce client pour travailler manuellement sur notre base de données, pendant un certain temps, mais ce n'est pas nécessaire pour faire fonctionner le site Web. Seul le démon du serveur (mongod) est nécessaire pour cela.

Étape 3 - Créer une base de données

La première chose que nous allons faire est de créer une base de données dans laquelle stocker des éléments. Dans votre console Mongo, saisissez ce qui suit :

Console Mongo

Maintenant, nous utilisons la base de données "nodetest1", ce qui est génial, sauf que rien n'existe encore. Pour faire exister la base de données, nous devons ajouter des données. Nous allons commencer par le faire directement dans le client Mongo.

Étape 4 - Ajouter des données

Ce que je préfère à propos de MongoDB, c'est qu'il utilise JSON pour sa structure, ce qui signifie qu'il m'était immédiatement familier. Si vous n'êtes pas familier avec JSON, vous devrez faire quelques lectures, car je crains que cela ne soit pas dans le cadre de ce didacticiel.

Ajoutons un enregistrement à notre collection. Pour les besoins de ce didacticiel, nous n'aurons qu'une simple base de données de noms d'utilisateur et d'adresses e-mail. Notre format de données ressemblera donc à ceci :

Console Mongo

Vous pouvez créer votre propre affectation _id si vous le souhaitez vraiment, mais je pense qu'il est préférable de laisser Mongo faire son travail. Il fournira un identifiant unique pour chaque entrée de collection de premier niveau. Ajoutons-en un et voyons comment cela fonctionne. Dans votre client Mongo, saisissez ceci :

Console Mongo

Quelque chose d'important à noter ici : que db représente notre base de données, qui, comme mentionné ci-dessus, nous avons défini comme nodetest1 . La partie usercollection est notre collection. Notez qu'il n'y a pas eu d'étape où nous avons créé la collection usercollection. C'est parce que la première fois que nous y ajoutons, il sera créé automatiquement. Pratique. OK, appuyez sur Entrée. En supposant que tout s'est bien passé, vous devriez voir :

Console Mongo

ce qui est la façon étrange de Mongo de vous dire que tout s'est déroulé comme prévu. Ce n'est pas très excitant, cependant, alors tapez ceci:

Console Mongo

Au cas où vous seriez curieux, la méthode .pretty() nous donne des sauts de ligne. Il reviendra :

Console Mongo

Sauf, bien sûr, que votre ObjectId sera différent, car comme mentionné, Mongo les génère automatiquement. C'est tout ce qu'il y a à écrire sur MongoDB à partir de l'application cliente, et si vous avez déjà travaillé avec des services JSON auparavant, vous allez probablement dire "oh, wow, cela va être facile à mettre en œuvre sur le Web."… tu as raison !

Une note rapide sur la structure de la base de données : il est évident qu'à long terme, il est peu probable que vous stockiez tout au plus haut niveau. Il existe une tonne de ressources sur Internet pour la conception de schémas dans MongoDB. Par exemple, notre propre série de tutoriels Five Minute React y plonge.

Maintenant que nous avons un disque, ajoutons-en quelques autres. Dans votre console Mongo, saisissez ce qui suit :

Console Mongo

Notez que, oui, nous pouvons passer un tableau avec plusieurs objets à notre collection. Pratique! Une autre utilisation de db.usercollection.find().pretty() affichera les trois enregistrements :

Console Mongo

Nous allons maintenant commencer à interagir avec le serveur Web et le site que nous avons configurés précédemment. Vous pouvez quitter la console MongoDB avec ctrl-c ou en tapant "exit" et en appuyant sur Entrée. Nous avons terminé ici.

Étape 5 - Accrochez Mongo au nœud

C'est là que le caoutchouc rencontre la route. Commençons par créer une page qui crache simplement nos entrées de base de données sous une forme légèrement jolie. Voici le code HTML que nous allons générer :

Je sais que ce n'est pas sorcier, mais c'est le but. Nous ne faisons qu'une simple lecture et écriture de base de données dans ce didacticiel, sans essayer de créer un site Web complet. Tout d'abord, nous devons ajouter quelques lignes à notre fichier app.js principal - le cœur et l'âme de notre application - afin de nous connecter réellement à notre instance MongoDB. Ouvrez C: ode odetest1app.js et en haut, vous verrez :

C: ode odetest1app.js

Ajoutez maintenant ces trois lignes :

C: ode odetest1app.js

Ces lignes indiquent à notre application que nous voulons parler à MongoDB, que nous allons utiliser Monk pour le faire et que notre base de données se trouve sur localhost:27017/nodetest1 . Notez que 27017 est le port par défaut sur lequel votre instance MongoDB doit s'exécuter. Si, pour une raison quelconque, vous l'avez modifié, utilisez évidemment ce port à la place. Maintenant, regardez plus bas dans le fichier, où vous avez ceci :

C: ode odetest1app.js

Nous devons travailler ici. Ces instructions app.use (ainsi que les autres que vous trouverez dans app.js ) établissent un middleware pour Express. L'explication courte et simple est la suivante : ils fournissent des fonctions personnalisées que le reste de votre application peut utiliser. C'est assez simple, mais en raison de l'enchaînement, cela doit venir avant nos définitions d'itinéraires, afin qu'ils puissent s'en servir.

Au dessus les deux lignes que je viens de mentionner, ajoutez ce qui suit :

C: ode odetest1app.js

REMARQUE : Si vous ne le placez pas au-dessus des éléments de routage mentionnés ci-dessus ( app.use('/', indexRouter) ), votre application NE FONCTIONNERA PAS.

Nous avons déjà défini db lorsque nous avons ajouté Mongo et Monk à app.js . C'est notre objet de connexion Monk. En ajoutant cette fonction à app.use , nous ajoutons cet objet à chaque requête HTTP (c'est-à-dire : req ) effectuée par notre application. C'est très bien et ne causera pas de problèmes de performances. Contrairement à MySQL, les connexions MongoDB n'ont pas besoin d'être ouvertes et fermées manuellement, donc l'objet db sera juste là, sans utiliser de ressources, jusqu'à ce que nous en ayons besoin.

Donc, encore une fois, ce code doit aller au-dessus de notre code de routage. L'ensemble de votre app.js devrait ressembler à ceci :

C: ode odetest1app.js

La prochaine chose que nous devons faire est de modifier notre itinéraire afin que nous puissions réellement afficher les données contenues dans notre base de données, en utilisant notre objet db.

Étape 6 - Extrayez vos données de Mongo et affichez-les

Ouvrez C: ode odetest1 outesindex.js dans votre éditeur. Il a toujours la route d'index et la route goofy / helloworld. Ajoutons un troisième :

C: ode odetest1 outesindex.js

OK… ça devient assez compliqué. Tout ce qu'il fait, cependant, est d'extraire l'objet db que nous avons transmis à notre requête http, puis d'utiliser cette connexion db pour remplir notre variable docs avec des documents de base de données, c'est-à-dire des données utilisateur. Ensuite, nous effectuons un rendu de page comme les deux autres GET de ce fichier de route.

Fondamentalement, nous indiquons à notre application quelle collection nous voulons utiliser ( usercollection ) et effectuons une recherche, puis renvoyons les résultats en tant que variable docs . Une fois que nous avons ces documents, nous effectuons ensuite un rendu de userlist (qui aura besoin d'un modèle EJS correspondant), en lui donnant la variable userlist avec laquelle travailler et en passant nos documents de base de données à cette variable.

Ensuite, configurons notre modèle EJS. Accédez à C: ode odetest1views et ouvrez index.ejs . Encore une fois, enregistrez-le immédiatement sous le nom userlist.ejs. Ensuite, modifiez le code HTML pour qu'il ressemble à ceci :

C: ode odetest1viewuserlist.ejs

Cela signifie que nous allons extraire l'ensemble de documents que nous venons d'appeler userlist dans le fichier de route, puis pour chaque entrée, obtenir les valeurs de courrier électronique et de nom d'utilisateur de l'objet et les mettre dans notre html. Notez que nous utilisons <%- au lieu de <%= . C'est parce que ce dernier rend le code HTML échappé, vous ne voyez donc que tout le code HTML en texte clair (accessoires aux lecteurs qui ont détecté ce bogue et m'ont envoyé un courrier à ce sujet !). Oh, aussi, cela semble être un bon endroit pour mentionner que nous ne avoir pour continuer à répéter les balises <html> et similaires sur chaque page. EJS prend en charge l'inclusion de fichiers partiels. C'est juste en dehors de la portée de ce tutoriel.

Nous sommes tous prêts. Enregistrez ce fichier et redémarrons notre serveur de nœuds. Rappelez-vous comment faire cela? Accédez à votre invite de commande, dirigez-vous vers C: ode odetest1 et ctrl-c ou cmd-c pour tuer votre serveur s'il fonctionne toujours depuis longtemps. Tapez ensuite :

Commande C: ode odetest1

Ouvrez maintenant votre navigateur et dirigez-vous vers http://localhost:3000/userlist et émerveillez-vous devant les résultats.

Vous extrayez maintenant des données de la base de données et les crachez sur une page Web. Agréable!

Il y a encore une chose que je voulais vraiment couvrir dans ce tutoriel, mais parce que c'est déjà aussi long que la Bible, je vais le parcourir ici. Vous pouvez très facilement changer la vue de votre liste d'utilisateurs d'une page Web basée sur Express avec un modèle EJS en une simple réponse JSON. Vous pouvez ensuite y accéder avec AJAX et le manipuler côté client, avec jQuery par exemple, au lieu du côté serveur. En fait, je voulais tellement couvrir ça que j'ai a écrit un deuxième tutoriel entier à ce sujet. Vous pouvez trouver le lien à la fin de celui-ci!

Partie 4 – Le Saint Graal : écrire à la DB

L'écriture dans la base de données n'est pas particulièrement difficile. Essentially we need to set up a route that takes a POST , rather than a GET .

Step 1 – Create your data input

We're going quick and dirty here: two ugly, unstyled text inputs and a submit button. 1996-style, but before we get to that, we're going to do some javacripting. Let's start by quickly wiring up a route for our add user form. Open /routes/index.js and add the following code au dessus the last module.exports line:

C: ode odetest1 outesindex.js

Now we just need a template. Open up /views/index.ejs, save it as newuser.ejs, and replace the whole file contents with this:

C: ode odetest1views ewuser.ejs

Here we're creating a form with the ID formAddUser (I like to preface my IDs with the type of thing we're ID'ing. It's a personal quirk). Method is post , action is adduser . Assez simple. Under that we've defined our two inputs and our button.

If you restart your node server and go to http://localhost:3000/newuser you'll see your form in all its glory.

Go ahead and submit. Enjoy the 404 error. We're about to fix that.

Step 2 – Create your DB functions

OK, this is pretty much the same process as with the user list. We don't need another app.use statement since we've already wrapped our database object into every request (see above). That means it'll be accessible to any new routes we write. That means that all we need to do is add a route for POSTing to /adduser.

Go back to /routes/index.js and let's create our insertion function. Once again, you'll want to put this au dessus the final module.exports line (it doesn't REALLY matter, but it makes things cleaner to wrap up with the export). This is a big one, so I've commented the code pretty thoroughly. C'est ici:

C: ode odetest1 outesindex.js

Obviously in the real world you would want a ton more validating, error-checking, and the like. You'd want to check for duplicate usernames and emails, for example. And to vet that the email address at least looks like a legit entry. But this'll work for now. As you can see, on successfully adding to the DB, we forward the user back to the userlist page, where they should see their newly added user.

Are there smoother ways to do this? Absolument. We're staying as bare-bones as possible here. Now, let's go add some data!

Step 3 – Connect and add data to your DB

Head to your command prompt, kill your node server if it's still running, and restart it:

Command C: ode odetest1

Assuming your server is running, which it should be, return to your web browser and point it at http://localhost:3000/newuser again. There's our exciting form, just like before. Except now let's fill in some values before we hit submit. I went with username "noderocks" and email [email protected]" … you can go with whatever you'd like.

Click submit, and check it out … we're back at /userlist and there's our new entry!

We are officially reading and writing from a MongoDB database using Node.js, Express, and EJS. You are now what the kids call a "full stack" developer (probably not a GOOD one, just yet, but I didn't promise that).

Toutes nos félicitations. Sérieusement. If you followed this all the way through, and if you really paid attention to what you were doing and didn't just paste code, you should have a really solid grasp on routes and views, reading from the DB, and posting to the DB. C'est-à-dire all you need to get started developing whatever app you want to build. I don't know about you, but I think that's really cool.

Part 5 – Next steps

From here, there's a million different directions you could go. I recommend completing the tutorial mentioned above, or you could dive into our Five Minute React series, which will step you through building and deploying a barebones web application using a custom Express.js API and a React front-end.

I hope this tutorial's been helpful. I wrote it because I could've used it when I got started, and I couldn't seem to find something that was quite at this level, or that broke things down in such long, long, loooong détail. If you made it this far, thanks for sticking with it!


Simplest way to make database front-end for data entry?

I'm in the process of designing and building an SQL database for a local company.

After I create all the necessary tables, entities, attributes and relations between them, the database needs to be filled with data. Data entry part is something company employees are going to do. I want to know what is the simplest way to enable them to enter data into this database.

In the long-run, the company will have custom software, something like ERP but more specific to their needs, and the DB will be a part of that. But in the meantime, weɽ like to start using the database for data collection and testing.

Is there some kind of a free app for Windows that will allow me to connect database to forms on the front end so they can start entering data?

EDIT: Thank You r/SQLServer community for very useful ideas and advice. You've been most helpful.


Which tool to build a simple web front-end to my database [closed]

Vous voulez améliorer cette question ? Mettez à jour la question afin qu'elle puisse être répondue avec des faits et des citations en éditant ce message.

I am a SQL Server DBA and have a database that I would like to access via a web browser. It will be used internally on the intranet and will simply be calling stored procedures in SQL Server to enter data into the database and return data into a simple web page. I am not a developer although I'm pretty good at SQL and scripting with powershell. I may use SSRS later to report on the data.

My question is which is the best tool for a non-developer to rapidly put together a web front end to SQL Server? I was thinking maybe ASP.NET, Ruby, Powershell, PHP, etc. Which is the simplest?

Where should I host the web application? Apache or IIS? I care more about putting something simple together than creating something fancy and flashy. Aucune suggestion? As you may have gathered I'm after the simplest solution for rapid development, at the cost of something slick and nice looking (there will only be two users, one of them me).


Best Web Development Tools, Software & Application

Nom Prix Relier
Sencha Ext JS 30-Day Free Trial Apprendre encore plus
Creative Tim Free + Paid Packages Apprendre encore plus
Envato HTML Templates Paid Packages Apprendre encore plus
Un Paid Packages Apprendre encore plus
Npm Free + Paid Packages Apprendre encore plus

1) Sencha Ext JS

  • 140+ UI components, such as HTML5 calendar, grids, pivot grid, D3 adapter, trees, lists, forms, menus, toolbars, panels, windows, and much more.
  • Hundreds of user extensions are available from the Sencha community.
  • The Ext JS Big Data Grid is 300x faster than the competition.
  • Flexible layout manager to help organize the display of data and content across multiple browsers, devices, and screen sizes.
  • Align with the ADA Standards for Accessible Design
  • Robust data package included in Ext JS decouples the UI components from the data layer.

2) Creative Tim

Creative Tim provides Bootstrap based design elements, which help you faster your development work. You can create web and mobile apps using this tool.

  • Provide the easiest way to get started is to use one of our pre-built example pages.
  • Using this tool helps you to save your time and as it allows you to focus on your business model.
  • Offers an easy to use Admin Templates
  • Admin Dashboards helps you to save a large amount of time
  • Offers pre-Made Sections & Elements

3) Envato HTML Templates

Envato has a collection of 1000+ readymade HTML5 templates that save you coding time. These templates offer power customization tools and are SEO ready. They offer optimized CSS and JS that improve Page Speed scores.

  • Templates based on Bootstrap, Vuejs, Laravel, Angular, and other popular frameworks.
  • Responsive SASS templates with multi-file upload support
  • Light and Dark Options
  • Charts Library, Chat, Email Apps and Widgets support
  • FREE Lifetime Updates
  • Detailed documentation and quick support via forums
  • Unlimited color options

4) One

One is a web development kit that offers varieties of easy to use themes. You can use this tool for unlimited domains and projects. It provides a wide range of add-ons, plugins, and stock photos. Such application provides access to fonts for a client and personal projects.

  • This tool provides audio and video assets that you can to your website with no hassle.
  • You can develop a professional website without any hassle.
  • It offers Draftium tool for visualizing your website idea in a better way.
  • Can be easily used for commercial purpose.
  • You will get regular updates when a subscription is activated.
  • Gives 24/7 professional support.
  • One web development tool provides more than 7672 presentation templates.
  • Get access to TemplateMonster products.

5) Npm:

Npm is the Node package manager for JavaScript. It helps to discover packages of reusable code and assemble them in powerful new ways. This web development tool is a command-line utility for interacting with a said repository that aids in the package.

  • Discover and reuse over 470,000 free code packages in the Registry
  • Encourage code discovery and reuse within teams
  • Publish and control access to namespace
  • Manage public and private code using the same workflow

6) TypeScript:

TypeScript is an open-source front end scripting language. It is a strict syntactical superset of JavaScript which adds optional static typing. It is one of the best Web developer tools specially designed for development of large applications and compiles to JavaScript.

  • TypeScript supports other JS libraries
  • It is possible to use this Typescript on any environment that JavaScript runs on
  • It supports definition files that can contain type information of existing JavaScript libraries, such as C/C++ header files
  • It is portable across browsers, devices, and operating systems
  • It can run on any environment that JavaScript runs on

7) CodeKit:

Codekit is a front-end web development tool. This tool provides support to build websites faster. It combines, minifies and syntax-checks JavaScript. It also optimizes images.

  • CSS changes are injected without need of reloading the entire page
  • Combine scripts to reduce HTTP requests.
  • Minify code to reduce file sizes
  • Works automatically with most languages without trouble

8) WebStorm:

WebStorm brings smart coding assistance for JavaScript. It provides advanced coding assistance for Angular, React.js, Vue.js and Meteo. It also helps developers to code more efficiently when working with large projects

  • WebStorm helps developers to code more efficiently when working with large projects
  • It provides built-in tools for debugging, testing and tracing client-side and Node.js applications
  • It integrates with popular command line tools for web development
  • Spy-js built-in tool allows tracing JavaScript code
  • It provides a unified UI for working with many popular Version Control System
  • It is extremely customizable to perfectly suite various coding style
  • It offers built-in debugger for client-side code and Node.js apps

9) HTML5 Boilerplate:

HTML5 Boilerplate help in building fast, robust, and adaptable web apps or sites. It is a set of files that developers can download, which provide a foundation for any website.

  • It allows developers to use HTML5 elements
  • It is designed by keeping progressive enhancement in mind
  • Normalize.css for CSS normalizations and common bug fixes
  • Apache Server Configs to improve performance and security
  • It offers optimized version of the Google Universal Analytics snippet
  • Protection against console statements causing JavaScript errors in older browsers
  • Extensive inline and accompanying documentation

10) AngularJS:

AngularJS is another must-have tool for front-end developers. It is an open-source web application framework. It helps to extend the HTML syntax for web applications. It is one of the best Web developer tools that simplifies front-end development process by developing accessible, readable and expressive environment.

  • It is an is open source, completely free, and used by thousands of developers around the world
  • It offers to create RICH Internet Application
  • It provides option to write client side application using JavaScript using MVC
  • It automatically handles JavaScript code suitable for each browser

11) Sass:

Sass is the most reliable, mature, and robust CSS extension language. This tool helps to extend the functionality of an existing CSS of a site like variables, inheritance, and nesting with ease.

  • It is straightforward and easy to use front end tool to write any code
  • Supports language extensions such as variables, nesting, and mixins
  • Many useful functions for manipulating colors and other values
  • Advanced features like control directives for libraries
  • It offers well-formatted, customizable output

12) Backbone:

Backbone.js gives structure to web applications by offering models with key-value binding and custom events.

  • Backbone.js allows developers to develop one-page applications
  • Backbone.js has a simple library used to separate business and user interface logic
  • This tool makes code simple, systematic and organized. It acts as a backbone for any project
  • It manages the data model which also includes the user data and display that data on the server side
  • It allows developers to create client side web applications or mobile applications

13) Grunt:

Grunt is a popular task runner on NodeJS. It is flexible and widely adopted. It is preferred tool when it comes to task automation. It offers lots of bundled plugins for common tasks.

  • It makes the workflow as easy as writing a setup file
  • It allows automating repetitive tasks with minimum effort
  • It has a straightforward approach. It includes tasks in JS and config in JSON
  • Grunt includes built-in tasks for extending the functionality of plugins and scripts
  • It speeds up the development process and increase the performance of projects
  • The ecosystem of Grunt is huge so it is possible to automate anything with very less effort
  • This Web development application tool reduces the chance of getting errors while performing repetitive tasks

14) Jasmine:

Jasmine is a behavior-driven js for testing JavaScript code. It does not depend on any other JavaScript frameworks. This open source tool does not require a DOM.

  • Low overhead, no external dependencies
  • Comes out of the box with everything need to test code
  • Run browser tests and Node.js tests using the same framework

15) CodePen:

CodePen is a web development environment for front-end designers and developers. It is all about faster and smoother development. It is one of the best front end development tools which allows to build, deploy website and build test cases.

  • It offers to build components to use elsewhere later
  • It includes some awesome features to write CSS faster.
  • Allows live view and live sync
  • Prefill API feature allows adding links and demo pages without need to code anything

16) Foundation:

Foundation is front-end framework for any device, medium, and accessibility. This responsive front-end framework makes it easy to design responsive websites, apps, and emails.

  • It offers the cleanest markup without sacrificing the utility and speed of Foundation
  • Possible to customize the build to include or remove certain elements. As it defines the size of columns, colors, font size.
  • Faster development and page load speed
  • Foundation is optimized truly for mobile devices
  • Customizability for developers of all levels
  • It takes responsive design to the next level, with the much-needed medium grid accommodating for tablets

17) Sublime Text:

Sublime Text is a proprietary cross-platform source code editor. It is one of the best front end development tools that natively supports many programming languages and markup languages.

  • Command palette feature allows matching keyboard invocation of arbitrary commands
  • Simultaneous editing allows making the same interactive changes to multiple areas
  • Offers Python-based plugin API
  • Allows developers to give project specific preferences
  • Compatible with many language grammars from TextMate

18) Grid Guide:

Grid guide is another important front end development tool. It allows creating pixel perfect grids within designs. It is a simple tool that can unlock very valuable workflows.

  • Add guides based on the canvas, artboards, and selected layers
  • Quickly add guides to edges and midpoints
  • Allows to create duplicate guides to other artboards and documents
  • Helps users to create custom grids

19) Chrome Developer Tools:

The Chrome Developer Tools are a set of debugging tools built into Chrome. These tools allow developers to do wide varieties of testing which easily saved lots of time.

  • This front end Web development application allows adding custom CSS rules
  • Users can view Margin, Border, and Padding
  • It helps to Emulate Mobile Devices
  • Possible to use dev tools as editor
  • User can easily disable browser's caching when dev tool is open

20) Modaal:

Modal is front end development plugin which gives quality, flexibile, and accessibile modals.

  • Optimized for assistive technologies and screen readers
  • Fully responsive, scaling with browser width
  • Customizable CSS with SASS options
  • It offers full-screen and viewport mode
  • Keyboard control for gallery open and closing modal
  • Flexible close options and methods

21) Less

Less is a pre-processor that extends the support for CSS language. It allows developers to use techniques to make CSS more maintainable and extendable.

  • It can freely download and use
  • It offers higher-level style syntax, which allows web designers/developers to create advanced CSS
  • It easily compiles into standard CSS, before the web browser begins rendering a web page
  • Compiled CSS files can be uploaded to the production web server

22) Meteor:

Meteor is a full stack JavaScript framework. It is made up of a collection of libraries and packages. It has been built on concepts from other frameworks and libraries to makes it easy to prototype applications.

  • It makes developing applications efficient
  • It comes with several built-in features that contain frontend libraries and NODE js based server
  • It speeds up development time significantly on any project
  • Meteor offers MongoDB database and Minimongo, which is written entirely in JavaScript
  • Live reloading feature allows refreshing only the required DOM elements

23) jQuery:

jQuery is a widely used JavaScript library. It empowers front-end developers to concentrate on the functionality of different aspects. It makes the things easy like HTML document traversal, manipulation, and Ajax.

  • QueryUI facilitates to make highly interactive web applications
  • It is open source and free to use
  • This front end Web development tool provides a powerful theme mechanism
  • It is very stable and maintenance friendly
  • It offers an extensive browser support
  • Helps to create great documentation

24) Github:

GitHub is a web development platform inspired by the way you work. It is one of the best web application development tools that allows developers to review code, manage projects, and build software.

  • Coordinate easily, stay aligned, and get done with GitHub's project management tools
  • It offers right tools for the job
  • Easy documentation alongside quality coding
  • Allows all code in a single place
  • Developers can host their documentation directly from repositories

3 réponses 3

Connect to the database using a superuser account (most often the user named postgres but in more recent versions the id of the user who installed the application.) Then issue the following SQL commands to enable PostGIS functionality.

You can do this from within pgAdmin or via psql -U [superuser] [database] from a command line.

Alternately for the command adverse as a superuser from within pgAdmin right click on your database's Extensions and select New Extension. Then in the drop down associated with Name select the postgis* extensions needed.


In the worst case you can create a new superuser:

or alter an existing user's role:

Easiest way I found is to:

Basically give the user superuser powers for a short time, and create the extension. Then revoke the superuser powers.

You can also use connect user_name to become that user and create the extension directly from the postgres user.

Another way to solve this that is suggested in the django docs

you can log into a database as the superuser and create the extension once. The extension will then be available to your api's db user. When django executes CREATE EXTENSION IF NOT EXISTS postgis postgres will not throw.

If you are seeing errors when migrating doublecheck you created the extension in the correct database, a sample sesssion

you can verify the extension is installed if you see the table spatial_ref_sys

for tests I recommend running them against a local dev database and granting the user superuser abilities like > ALTER ROLE <user_name> SUPERUSER

You can also install postgis to the template1 database template which is inherited by default by all newly created database.

All new databases created from this point will have the postgis extension installed, including Django's test database, unless they specify a different template when creating a database.

If having postgis installed to all newly created databases is not desirable, you can create a new template, install postgis in it, and then have Django use this template when creating the test database.

A safe way to do this without delegating superuser privileges would be to access the database in which we are executing the query with a user with a superuser role such as postgres.

This way you don't expose security and you can believe the extension in the db.

As of Postgres 13, some modules / extensions are considered "trusted", and can be installed by non-superusers who have CREATE privilege on the current database.

The trusted modules are: btree_gin, btree_gist, citext, cube, dict_int, fuzzystrmatch, hstore, intarray, isn, lo, ltree, pgcrypto, pg_trgm, seg, tablefunc, tcn, tsm_system_rows, tsm_system_time, unaccent, uuid-ossp

To check whether a given module is eligible, visit https://www.postgresql.org/docs/13/contrib.html and select the module in question. If it is considered "trusted", the page will contain the sentence:

This module is considered “trusted”, that is, it can be installed by non-superusers who have CREATE privilege on the current database.


  • Geographic Information System – PostgreSQL has a powerful spatial database extender called PostGIS. This adds support for geographical data for locations in various formats using SQL queries. PostGIS adds spatial functions such as geometry data types, distance, area, etc. to PostgreSQL. The latest release of PostGIS is 3.1.1.
  • Financial Industry – PostgreSQL is recommended for use in the financial industry. Since PostgreSQL is ACID-compliant, it is considered ideal for use in OLTP workloads. PostgreSQL integrates well with mathematical software like R et Matlab, making it suitable for performing database analytics in OLAP workloads.
  • Research purposes – PostgreSQL has in-built analytical capabilities and a powerful SQL engine that can store and process vast amounts of data. Research and scientific workloads require storing data in exabytes, and PostgreSQL has evolved to fill future data requirements.
  • Manufacturing industry – PostgreSQL is considered to be highly reliable and is used by industrial manufacturers. In manufacturing, each transaction is critical, and point in time recovery is vital to ensure minimal data loss in the event of a disaster. As a result, the fact that PostgreSQL offers automatic failover, streaming replication, near-zero downtime for upgrades, etc., makes it suitable for manufacturing industries.
  • Web technology – There has been an increase in the use of LAPP (Linux – Apache – PHP – Postgres) as a new infrastructure stack, preferred for developing scalable web applications due to its ease of installation and setup. LAPP is also the preferred infrastructure stack in cloud deployments by various startups. PostgreSQL works well with all modern web frameworks such as Django (Python), Node.js (JavaScript), Hibernate (Java), PHP, etc.

[ Getting started with containers? Check out this free course. Deploying containerized applications: A technical overview. ]


When you install Postgres on a Debian-based Linux distro (in my case, Linux Mint 18), the installer will automatically create a database cluster with a data directory in /var/lib/postgresql/9.5/main . But it’s fairly common to run a server with a small root partition, and have the database cluster, which can grow very large, on a separate data partition.

I didn’t have any trouble using initdb to initialize the cluster in the desired location. But at system boot, the server automatically started using the default data cluster, not the one I had created. The PostgreSQL documentation on how to customize server start was pretty obtuse.

Fortunately, Debian-based distros ship with some utilities that allow you to create multiple data clusters, and integrates them all into a multicluster management architecture:

    is used to list clusters available (whether running or not) on the server is used (surprise!) to drop an existing cluster is used to create a cluster

Some important points about pg_createcluster :

  1. An existing cluster will be added to the list of clusters, rather than reinitialized. This was important, because I had already run a load script overnight to restore a database dumped from a prior version of Postgres/PostGIS.
  2. PostgreSQL uses the default port number 5432. New clusters will be automatically initialized to use a new port one number higher than the highest existing Postgres port (5433 for the second cluster, 5434 for the third cluster, etc.).

I did not need the default cluster. I also intend to run only one cluster on this machine, and wanted it to use the standard port (5432). pg_dropcluster and pg_createcluster both take the Postgres version number (9.5 in my case) and cluster name as arguments. The default cluster is named “main”. My computer is named tycho, so I decided to name my cluster “tycho_main” so that it would be clear this was ne pas the default cluster. So I ran the following commands:

pg_dropcluster does take --stop as an option to stop a running server, but I already had both servers stopped. The -d option to pg_createcluster is where you set the data directory for the new cluster, and the --start option start the cluster immediately after adding it to the list of available clusters.

After running those commands, I confirmed I could connect to the running server. Then I rebooted to make sure the server started at boot, which it did.

REMARQUE: Tablespaces can also be used within the database to determine where the database stores the data. The primary use case for this, however, is if the DBA wants to store data that is accessed with varying frequency on media of different speed: commonly accessed tables on fast hard drives or solid state drives, infrequently accessed tables on slow hard drives. It adds complexity to the installation, and is not really intended for the case where the DBA wants the tout database cluster on one partition, but in a nonstandard location.


Look for More

SQuirreL Client has the backing of a number of developers who offer their philanthropic coding talent to enhance the application. The open source application is under constant construction and improvement. As it is already a powerful offering, it will be interesting to see what future versions of the application will bring. The development team for the SQuirreL Client openly solicits new contributors to join the development effort. Another interesting open source project that is closely associated with SQuirreL is called JFaceDbc. You can learn more about this project on the JFaceDbc home page at http://jfacedbc.sourceforge.net/. The JFaceDbc SQL client tool is powered by the low level SQL code of SQuirreL and instead of using the Java Swing API for its visual display, uses the Standard Widget Toolkit (SWT) of the Eclipse Project.

Reconnaissance

The author would like to thank Colin Bell, the head developer of the SQuirreL SQL Client for his help in the review of this article.


Voir la vidéo: POSTGIS INSTALLATION ON WINDOWS 10 u0026 CUSTOMIZE PGADMIN4 TO DARK MODE! (Octobre 2021).