Utiliser core data ou autre chose
chaps31
Membre
Bonjour à tous,
Il y a pas mal de temps j'avais commencé à programmer un logiciel de gestion de clientèle pour mon usage perso pour commencer mais qui aurait été rapidement amené à être distribué à des proches, voire plus selon le résultat . Tout ça dans le cadre du boulot, donc pas question d'à peu près il faut que ce soit fiable, il s'agit de la gestion d'une clientèle.
Après moulte discussion je me suis lancé avec les aides précieuses et nombreuses de feu objective-cocoa, j'imagine que les mêmes talents sont toujours par ici.
Malheureusement mon temps disponible c'est réduit à peau de chagrin et le travail à accomplir s'avérait dantesque expliquant mieux le prix de ces logiciels, j'ai arrêté. Ceci dit je pouvait dans un premier temps limiter les fonctions...
Et je reviens plusieurs mois plus tard, avec un problème de base, c'est le cas de le dire, la base de données, pour le même logiciel mais plus simple pour commencer.
Il en faut une avec pas mal de tables, au début j'avais opté pour Postgresql, mais depuis je n'entends qu'une chose, une base de ce type là , forcément client-serveur sans ingénieur réseau pour l'administrer il faut oublier, un indépendant seul aura un jour ou l'autre des problèmes insolubles pour lui... Bon OK, mais des logiciels qui gèrent des données il y en a pléthores qu'utilisent-ils comme base de données ?????
Revenant à la charge, je me dis que je pourrais rejeter un coup d'oeil du coté de CoreData, si j'ai bien compris un SQLlite à la sauce Apple, mais il y a une pierre d'achoppement qui j'espère n'est plus d'actualité (nous sommes sous snow leopard maintenant):
Peut-on avec CoreData créer une base de données multi-utilisateurs ? Est-ce que l'on peut accéder à une telle base à partir de plusieurs ordinateurs sur un réseau local ? En même temps bien sûr avec la base sur un seul ordi et un exemplaire de l'appli sur chaque poste ?
Merci d'avoir lu ce long message et merci pour vos avis.
Chaps31
Un amateur mais qui aime ça
Il y a pas mal de temps j'avais commencé à programmer un logiciel de gestion de clientèle pour mon usage perso pour commencer mais qui aurait été rapidement amené à être distribué à des proches, voire plus selon le résultat . Tout ça dans le cadre du boulot, donc pas question d'à peu près il faut que ce soit fiable, il s'agit de la gestion d'une clientèle.
Après moulte discussion je me suis lancé avec les aides précieuses et nombreuses de feu objective-cocoa, j'imagine que les mêmes talents sont toujours par ici.
Malheureusement mon temps disponible c'est réduit à peau de chagrin et le travail à accomplir s'avérait dantesque expliquant mieux le prix de ces logiciels, j'ai arrêté. Ceci dit je pouvait dans un premier temps limiter les fonctions...
Et je reviens plusieurs mois plus tard, avec un problème de base, c'est le cas de le dire, la base de données, pour le même logiciel mais plus simple pour commencer.
Il en faut une avec pas mal de tables, au début j'avais opté pour Postgresql, mais depuis je n'entends qu'une chose, une base de ce type là , forcément client-serveur sans ingénieur réseau pour l'administrer il faut oublier, un indépendant seul aura un jour ou l'autre des problèmes insolubles pour lui... Bon OK, mais des logiciels qui gèrent des données il y en a pléthores qu'utilisent-ils comme base de données ?????
Revenant à la charge, je me dis que je pourrais rejeter un coup d'oeil du coté de CoreData, si j'ai bien compris un SQLlite à la sauce Apple, mais il y a une pierre d'achoppement qui j'espère n'est plus d'actualité (nous sommes sous snow leopard maintenant):
Peut-on avec CoreData créer une base de données multi-utilisateurs ? Est-ce que l'on peut accéder à une telle base à partir de plusieurs ordinateurs sur un réseau local ? En même temps bien sûr avec la base sur un seul ordi et un exemplaire de l'appli sur chaque poste ?
Merci d'avoir lu ce long message et merci pour vos avis.
Chaps31
Un amateur mais qui aime ça
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Derrière CoreData, c'est une base SQLLite. C'est monoutilisateur.
CoreData est plutôt fait pour manipuler un modèle de données interne à ton application. Pas pour communiquer avec l'extérieur, donc avec une base web ou avec d'autres clients.
J'utilise PostgreSQL depuis des années et je n'ai eu aucun souci. Et je suis loin d'être un ingénieur réseau
Il existe des installeurs très simples d'emploi, il suffit de double-cliquer pour installer et paramètrer PostgreSQL. (ce n'était effectivement pas le cas avec les versions antérieures à la 8)
C'est également facile de l'attaquer avec Objective_C/Cocoa, il existe des frameworks très puissants (celui que j'utilise est "minimaliste" mais gratuit). Il existe également un plugin pour RealBasic qui fonctionne très bien.
PostgreSQL me semble être -de loin- le meilleurs choix.
Si tu te lances, je pourrais t'aider.
Voici ma source: http://www.postgresqlformac.com/
Je vais regarder la version de postgre que j'avais installé, faut que je revoie mes classes de connexion car je me souviens d'un certains flou, j'étais allé un peu au pifomètre pour les méthodes du framework qui interface avec la base postgre (la même source que ton lien) ça marchait mais je n'aimais pas trop de ne pas maitriser ce que je faisais, merci encore et promis je t'appellerais à l'aide
Salut ALiGator, tu ne dois pas te souvenir de moi mais moi très bien de tes aides nombreuses.
Maintenant tout doit passer par le framework j'imagine, impec mais j'ai 2 problèmes...
1) Les autorisations pour lancer Postgresql ne sont pas bonnes et le serveur ne se lance pas... Autant dire qu'aucune base existe encore puisqu'il ne se lance pas...
2) Je ne trouve nulle part un descriptif précis des différentes classes de PGSQLKit et de leurs méthodes. Notamment si la méthode execCommand parle d'elle-même comment récupérer un tableau des données...
Je veux bien un p'tit coup de pouce Rocou, merci
Pour le lancement du serveur, l'installateur installe des préférences. Tu vas dans le panneau des préférences système, tu cliques sur PostgreSQL, puis sur Start
Pour les classes de PGSQLKit, il faut fouiller les classes, effectivement, la "doc" est maigre.
Voici comment débuter:
Une mise à jour, avec quemques pièges à éviter:
Un SELECT qui va initialiser un NSPopupButton:
//IBOutlet NSPopupButton *popClient;
//Une table clients
Un SELECT qui va remplir une NSTableView: (le code est issu de mon application)
Il faudra que tu implémentes un truc de ce genre pour les problèmes de polices:
Une autre question j'ai un gros problème... J'ai installé postgresql avec l'installeur unifié, il crée un script dans les startupItems qui lance le serveur au démarrage du mac, sauf que... Mac OSX m'envoie un message d'alerte m'informant qu'à cause d'un problème de sécurité il ne lance pas le script dans les startupItems...
J'ai cherché partout sur le net, réparé les autorisations, fait un chown dans le terminal avec -R a+r-x, rien n'y fait mac osx refuse de lancer le script. Par contre "à la main" dans le terminal avec un sudo aucun problème...
La misère, tu as une idée ?
Merci encore
sudo chown -R root:wheel /Library/StartupItems/<tonstartupitem>
MERCI, ça marche impec... heu.... Tu peux m'expliquer ce que ça a fait ? Merci
Comme ça le système a le droit de lancer <tonstartupitem> puisqu'il en est maintenant le possesseur.
De plus, le chmod a donné les droits d'écriture, lecture et exécution au possesseur (donc à "root"), et les droits de lecture et exécution au reste du monde (mais pas d'écriture).
Pour les LaunchServices c'est juste un XML où tu dis au système de lancer tel commande en tant que tel utilisateur a un moment précis (lancement de la machine appel périodique, lors d'un accès réseau sur un port particulier etc)
C'est pas très complexe a mettre en oeuvre et une fois qu'on connait les capacité du truc ça peut donner des idées pour se simplifier la vie
Mais ça vallait le coup, et je te remercie d'avoir attiré notre attention sur cette nouveauté (d'après 10.4).
C'est vrai qu'avec les cron.tab, en dehors d'être pénible à utiliser, nos tâches de fond étaient purement et simplement oubliées si le portable était fermé à l'instant crucial.
Et la possibilité de guetter une évènement déclencheur (connexion ...) est trop géniale.
Je suppose que TimeMachine utilise ça pour se lancer quand le disque de sauvegarde est connecté ou que TimeCapsule est détectée...
Bref, ça ouvre des horizons !!! :adios!:
Pour ceux que ça interesse: System Startup Programming Topics