ZONNY - Projet arrêté

Le problème exposé dans ce sujet a été résolu.

Aujourd’hui, grosse journée de travail sur le projet!

  • mise en place du VPS sous Debian 8 64bits. (Apache, PHP 7.0, PostgreSQL)
  • migration de MySQL vers Postgres (recommandé par Victor, merci d’ailleurs!)

L’API (enfin le début d’API) est enfin en ligne à l’adresse : https://zonny.me/docs

Pour l’essayer vous pouvez utiliser les différents tokens suivants :

  • test
  • test1
  • test2
  • test3

Vous pouvez tout essayer! Merci cependant de ne pas supprimer ces comptes. N’hésitez pas à nous faire part de vos remarques, suggestions…

La migration de MySQL vers Postgres a été un long travail… très long. En effet, beaucoup de requêtes étaient incompatibles avec Postgres (des conditions comme IF() qui devient case when then else end, des alias qui ne peuvent pas se situer partout dans la requête comme après le WHERE) ou encore la structure de la base de données qui demande des types de variables différents (varchar n’existe pas sous Postgres par exemple). Mais heureusement http://www.sqlines.com/online était là !

Les raisons de passer sous Postgres étaient Postgis mais surtout les benchmarks qui semblent montrer que Postgres est plus rapide lorsqu’il y a beaucoup de données (j’espère que c’est vrai et que j’ai pas fait tout ça pour rien :p ). Je dois dire que j’ai été agréablement surpris par Postgres. Certaines fonctions simplifient la vie comme par exemple COALESCE() (je ne connais pas d’équivalent sous Mysql en tout cas!).

Cependant j’ai rencontré beaucoup de difficultés dont 2 persistent :

  • Comment créer un alias après un WHERE ? Car par exemple j’ai la requête suivante :
1
SELECT * FROM members WHERE function()<15000 OR function()=0 ORDER BY function() DESC

La fonction va t-elle être exécutée 3 fois ? Y a-t-il un système de cache ou bien une solution plus adaptée ?

  • Dans l’API, la distance entre deux points est maintenant calculées par la fonction de Postgis ST_Distance(). Cependant j’ai l’impression que la distance retournée entre deux ST_Point n’est pas correcte. Je re vérifierai demain.

Merci d’avance pour votre future aide :) . Ce sera tout pour aujourd’hui sinon mais j’aurai d’autres questions pour demain ne vous en faites pas !

+0 -0

Cet après-midi j’ai trouvé les réponses à mes 2 problèmes !

  • Il y avait bien un problème dans le calcul de distance. Il fallait englober ST_Point par la fonction geography(). Source : https://stackoverflow.com/a/31666415/8219923

  • La fonction va t-elle être exécutée 3 fois ? Y a-t-il un système de cache ou bien une solution plus adaptée ?

La réponse est que la fonction va être exécutée une seule fois car la fonction ST_Distance() est une fonction IMMUTABLE et qu’elle est appelée les 3 fois après le WHERE. Source : https://stackoverflow.com/a/8534073/8219923

+0 -0

ZONNY ayant pour objectif de ne pas être trop intrusif dans la vie des utilisateurs, les positions des amis affichées ne sont qu’approximatives. Les positions des amis sont d’autant plus approximatives que l’ami(e) est loin de l’utilisateur. Dans le tableau ci-dessous, on voit en fonction de la Distance (entre l’utilisateur et l’ami(e)) le Rayon du cercle de précision de la position de l’ami(e). Ces valeurs sont celles souhaitées initialement.

Distance (km) Coef Rayon (km)
0 0,004504505 0,5
2 0,004504505 0,5
4 0,005855856 0,65
135 0,225225225 25
250 0,405405405 45
370 0,405405405 45
665 0,810810811 90
2130 4,054054054 450
6140 4,504504505 500
10000 4,504504505 500
Valeurs initialement voulues

Cependant, il faut trouver l’équation de cette fonction. La meilleure courbe de tendance de cette fonction est la suivante d’après moi (par rapport à la précision et au faible degré du polynôme) :

$$coef(x) = f(x) = 2 \cdot 10^{-11} \cdot x^3 - 4 \cdot 10^{-7} \cdot x^2 + 0.0026 \cdot x + 0.004504505$$
avec x = distance en km

Voici le rendu graphique (à une constante près ;) ) :

Les valeurs obtenus sont donc les suivantes :

Distance (km) Coef Rayon (km)
0 0,004 0,44
1 0,0065996 0,732555602
2 0,0091984 1,021022418
4 0,014393601 1,597689742
135 0,347759208 38,60127203
250 0,6293125 69,8536875
370 0,91225306 101,2600897
665 1,561991593 173,3810668
2130 3,92051194 435,1768253
6140 5,51767088 612,4614677
10000 6,004 666,444
Valeurs obtenues par la ’modélisation’

Ainsi dans la route GET/{radius}, les positions des utilisateurs sont approximatives.

Si vous avez une meilleure façon de faire ou bien une meilleure fonction à proposer, n’hésitez pas !

Une autre petite question sinon qui n’a rien à voir avec les positions des amis. Pour bloquer les DDOS (GET,POST etc) je pensais utiliser Fail2Ban. Mais activer les filtres par défaut est-il suffisant ? Faut-il que j’ajoute d’autres filtres sur Fail2Ban ou avez-vous peut-être quelque chose de mieux à me conseiller ?

Merci d’avance :)

Merci ! Super tutoriel. J’espère que cela sera suffisant :) . Déjà quelques IP de bannies. Comme quoi, c’est utile !

Ce weekend, pas beaucoup d’avancement technique malheureusement. C’est bien parfois de prendre un peu de recul par rapport au code ! Je pense à améliorer un peu la courbe tendancielle qui est trop approximative pour les courtes distances. C’est préférable d’être approximatif sur les longues distances (on est pas à quelques kilomètres de rayons près pour ces distances) plutôt que sur les courtes.

Le travail actuel (et donc des prochains jours) va être le rajout d’autres ROUTES importantes comme celles du système de chat par exemple. Il va falloir modifier la route GET/{rayon} car finalement ça ne correspond pas au fonctionnement sur l’application. Quand l’utilisateur se déplacera sur la carte de l’application il ne s’agira pas d’afficher les amis et les évents dans un certain {rayon} mais ceux situés entre les 4 angles de la carte.

Enfin, je pense à la constitution d’une équipe. Actuellement nous sommes deux. Un chargé de la partie technique et l’autre chargé de la partie communication (possède de gros comptes Facebook, Twitter, Insta et Snap pour le jour du lancement ! ). Pour être franc, dès le début je savais que je ne pourrai pas réaliser techniquement ce projet seul. Sinon ce projet aboutirait dans des années et serait plus ou moins travaillé. Chacun a son domaine. On ne peut pas s’inventer Designer comme ça ! Je vous tiens au courant bientôt ;) . En attendant, si vous êtes intéressé par le projet et que vous pensez pouvoir y apporter quelque chose, n’hésitez pas !

Pas de grandes nouveautés pour le moment !

Le travail du jour était de revoir un peu la courbe tendancielle. Il a fallut passer à un polynôme de degré 4. Maintenant la fonction est la suivante :

$$ f(x) = \begin{cases} 2 \cdot 10^{-14} x^4 - 3 \cdot 10^{-10} x^3 + 10^{-6} x^2 + 0.0007 x + 0,004504505 &\text{ si }x < 2840 \\ 4.504504505 &\text{ sinon } \end{cases}$$
avec x la distance en km

Ainsi les erreurs (différence entre les valeurs initiales et celles obtenues par la modélisation) sont plus petites :

Distance (km) Erreur modélisation 1 (ancienne) Erreur modélisation 2 (actuelle)
0 0 0
1 0,0025996 0,000701
2 0,0051984 0,001403998
4 0,010393601 0,001464629
135 0,342407856 0,10872719
250 0,404591779 0,168010276
370 0,507352159 0,019821969
665 1,157090692 0,017106065
2130 3,110205634 0,509059417
6140 1,46412133 0
10000 1,5 0
les valeurs sont acceptables.

Bon promis, normalement je ne vous reparle plus de cette fonction :p Ce sujet ne passionne pas grand monde apparemment !

Sinon, pour la formation de la future équipe de ZONNY (j’espère du moins!) j’ai cherché des outils pour le travail en équipe en ligne. Après plusieurs recherches, mon choix est la combinaison des deux outils suivants :

  • Slack - pratique pour avoir une conversation en temps réel. En plus, Slack possède une application Asana.
  • Asana - pratique pour la création des tâches, gestion des datelines, voir l’avancement général du projet etc.
Petit screen de Asana pour ceux qui ne connaîtrait pas. Cela ressemble beaucoup à Trello.
+0 -0

Ce soir, l’application Android a commencé ! Comme vous avez pu le voir, l’API n’est pas entièrement finie (il manque quelques routes) mais elles seront terminées au fur et à mesure. D’une part c’est sympa d’alterner de "support", et cela permet de se rendre compte progressivement de ce qui manque dans l’API.

L’application avance bien. Mais j’ai une petite question :

  • Pour communiquer avec l’API, HttpClient semble faire l’affaire. Mais quels sont les avantages d’utiliser d’autres librairies comme Android Asynchronous Http Client ou encore OkHttp car je n’en ai pas vraiment trouvés. Vous en avez peut-être à me conseiller ?

EDIT: finalement j’ai trouvé un tutoriel très bien conseillant Android Volley. Cela semble très simple à utiliser également. Je vous en dis plus dans les prochains jours !

Merci :)

+0 -0

Cela fait plusieurs jours que je n’ai rien écris ici ! Ce n’est pas que le projet n’avance plus, mais que j’ai décidé de poster moins souvent à propos du projet. Tout d’abord car ça prend du temps d’écrire (sans fautes d’orthographes, expliquer quelque chose de compréhensible etc.) mais surtout que ce n’est pas forcément intéressant :)

Durant les derniers jours, on a avancé à notre rythme :

  • Intégration du Facebook SDK dans l’application Android (date d’expiration du token, gestion lors du refus de certaines permissions Facebook…)
  • Gestion des permissions Android pour les versions supérieurs ou égales à Lollipop.
  • Ajout d’un "Slider" de présentation de l’application lors de la première utilisation de l’application.
  • Demande d’activation du GPS pour une localisation plus précise. La question est : est-ce utile étant donné que j’utilise la COARSE_LOCATION ? Je ne pense pas car normalement même avec le GPS désactivé, cela est censé donné une localisation approximative mais exploitable. Donc popup à peut-être enlever.
  • Lecture de la documentation de Google Maps pour l’intégration de la carte.

Il a des petites galères comme l’intégration d’un marker (qui est un layout) et pouvoir effectuer des animations particulières non prévues par Maps : c’est à dire seulement animer une partie du marker. Pour le moment la solution envisagée serait de convertir le layout animé en un Bitmap :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
/* from http://www.nasc.fr/android/android-using-layout-as-custom-marker-on-google-map-api/ */
public static Bitmap createDrawableFromView(Context context, View view) {
      DisplayMetrics displayMetrics = new DisplayMetrics();
      ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
      view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
      view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
      view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
      view.buildDrawingCache();
      Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
 
      Canvas canvas = new Canvas(bitmap);
      view.draw(canvas);
 
      return bitmap;
  }

puis d’actualiser le Bitmap à un intervalle de temps très régulier (moins de 100 ms) pour obtenir une animation. Mais cette solution est du bricolage et doit consommer beaucoup de ressource pour pas grand chose… Du coup, je vous demande si vous n’auriez pas une idée/solution s’il vous plait :) Merci d’avance !

  • Recherche d’autres "librairies" ou morceaux de codes déjà existants permettant de gagner du temps dans le développement de l’application. Pourquoi refaire ce qui existe déjà hein ? :p

Voilà, c’est tout (enfin c’est quand même déjà pas mal!).

+0 -0

Bonsoir à tous !

Quelques petites nouveautés :

  • le nouveau logo est presque terminé. Après de nombreux essais quelque chose de bien s’en dégage enfin ! Vous verrez dans les prochains jours.
  • le système de localisation à intervalle régulier est enfin fonctionnel. Cela m’a pris beaucoup de temps car j’ai dû choisir entre les deux solutions de localisation proposées par Android (et surtout car je pensais que le NETWORK_PROVIDER fonctionnait même avec la localisation désactivée :honte: ). J’ai finalement choisi la suivante : FusedLocationProviderAPI car c’est celle recommandée par la documentation Android mais aussi car il y a des fonctions intéressantes comme setInterval() ou encore setFastestInterval().

J’ai également commencé à bien schématiser les activités par une succession logique de "blocs". Voici ce qui est prévu pour la MainActivity par exemple :

Schématisation du MainActivity

Dans les prochaines semaines, une version alpha de l’application devrait-être possible ! Enfin, d’ici là, il faut être patient…

Salut tout le monde !

Quoi ça fait plus d’une semaine que j’ai rien posté ici ? o_O Y’a du relâchement chez ZONNY !

Non, plus sérieusement, le développement de l’application continue. Avec plus ou moins de difficultés tout de même :

  • Système de navigation dans l’application. Menu latéral, Tabs, boutons dans la toolbar en haut à droite etc.
  • L’activité permettant à l’utilisateur de se définir comme indisponible est presque terminée. Le plus "compliqué" est de traiter les Datetimes et de s’arranger pour que les fuseaux horaires ne soient pas un problème.
  • L’activité (le fragment plutôt!) de la 3ème Tab est presque finie. Il s’agit de la liste contenant l’historique des événements liés à l’utilisateur. Une modification de l’API est à faire puisque lors d’un refresh (*réactualisation) de la liste, il faut seulement récupérer les nouveaux éléments par rapport à la liste déjà téléchargée par l’application. Alors que actuellement, l’API ne peut retourner que tout l’ensemble des événements.
  • La disposition des amis sur la Google Maps est commencée, et encore c’est un grand mot. Cela a été l’objet de mes recherches durant tout le weekend (même demandé de l’aide ici ! Merci @motet-a et @A-312 ;) ). Cela va demander plus de temps que prévu. Il est impossible de gérer des animations complexes en tant que Markers et il faut donc "bidouiller" la chose afin d’intégrer des TileOverlay. S’il y a des connaisseurs par ici, je vous écoute !! C’est donc la priorité pour le moment dans le développement de l’application. Il faut dire que la sélection des amis sur la carte est le point de départ de beaucoup d’actions sur l’application et donc sans, le développement est assez limité.

Je ne vais pas mettre des screens pour le moment car actuellement le design n’est pas du tout réalisé : les icônes utilisées sont prises au hasard et sont pixelisées, certaines activité n’ont qu’un bouton hideux… Donc mieux vaut pas !


Sinon, je voulais vous demander quelque chose d’important : comment trouver des associés développeurs/designers ? Comme déjà dit dans un précédent post, ZONNY est tout de même un projet assez grand et ambitieux et qu’avec l’équipe actuel, devant la charge de boulot, l’application ne pourra sortir que dans très longtemps. Cependant je n’arrive pas à trouver d’associés… Peut-être que personne ne trouve l’idée intéressante ?

ZONNY est donc à la recherche d’associés développeurs/designer !

Les différentes places (ou postes ?) d’associés possibles (en espérant qu’au moins une personne sera intéressé :honte: ) :

  • Un (ou plusieurs) développeur(s) en Swift ou Objective-C afin de développer l’application iOS. Cette version est capitale pour le lancement de ce projet.
  • Un développeur en Java pour la version Android. Bien que je saches développer en Java, je ne suis pas un expert (et loin de là !). Bien évidemment, si quelqu’un est intéressé pour cette place je ne le laisserai pas tout seul. Il faut bien que je fasse quelque chose aussi !
  • Un (ou plusieurs) designer(s) polyvalents afin d’aider celui déjà présent dans l’équipe (qui est débordé !). Il pourrait s’agir de créer des images pour faire de la com’ (pour notre chargé de communication qui est actuellement occupé à faire gonfler des comptes sur Facebook/Twitter/Insta pour le lancement!), gérer des designs en XML (pour les différentes vues dans les applications) ou encore gérer le design de la Landing Page. Vous n’êtes pas obligé de faire savoir faire tout cela pour postuler, l’idéal serait juste qu’à la fin l’équipe soit capable de faire tout cela!

Bien évidemment, n’ayant aucun budget pour cela, je ne peux proposer une rémunération. C’est pourquoi je propose des places d’associés. Cela veut donc dire que tout associé aura le droit à un pourcentage des bénéfices (recettes moins les dépenses) qu’on aura défini à l’avance. Après, je ne sais pas comment officialiser tout cela… C’est le problème :euh: Si vous avez des idées encore une fois !

Voilà je crois que tout est dit ! N’hésitez-pas à réagir s’il vous plait (à me dire pourquoi personne ne semble intéressé etc).

Bonsoir !

Cela fait longtemps que rien n’a été posté ici. Et pour cause : pas beaucoup d’avancées. Sans raconter ma vie (car tout le monde s’en fou :lol: ), j’ai eu quelques obligations qui m’ont forcées à mettre ZONNY un peu de côté pendant le mois dernier.

Un nouveau membre a intégré l’équipe ! Il s’agit de Matthieu. Il est très polyvalent et s’occupe principalement du marketing (il a pleins de bonnes idées :magicien: ).

Nous avons donc défini un objectif précis pour les prochaine semaines : sortir une Alpha. Cependant, celle-ci sera assez limitée dans les possibilités par rapport à la version finale :

  • connexion via Facebook
  • tutoriel de présentation
  • création d’un événement
  • carte avec les événements
  • notifications push lors des invitations

La liste n’est pas très exhaustive mais elle permettra de recevoir rapidement des feedbacks. C’est capital afin de ne pas développer une application complètement à côté des besoins de l’utilisateur !

Ainsi les autres tâches en cours passeront après (comme la refonte du logo). Concentration totale sur l’Alpha. Ne perdons pas plus de temps à rédiger ce message et retournons sur Android Studio !

ZONNY continue d’évoluer !

  • Modification de quelques bugs mineurs sur l’API
  • Modification de la route GET/ (celle qui est chargée d’afficher les éléments intéressants sur la carte de l’utilisateur). Comme vous pouvez le voir sur la documentation : https://zonny.me/v1/docs#/home/GetList, le paramètre rayon a été retiré. Pour cause, il ne servait à rien. L’utilisateur n’a pas constamment la carte centrée sur lui.
  • Modification de la route PUT/account. Il y a maintenant le paramètre optionnel gcm_id permettant d’ajouter l’id de Google Cloud Messaging de l’utilisateur dans la base de données (Merci encore @motet-a). Lien vers la doc : https://zonny.me/v1/docs#/account/UpdateAccount
  • Ajout de Firebase dans l’application Android. Le serveur est maintenant capable d’envoyer une notification à l’application. Il reste maintenant à réfléchir à toutes les notifications possibles (invitation à un événement, nouvel ami sur l’application, message…).
  • Finitions de l’activité affichant le compteur d’indisponibilité de l’utilisateur :
compte à rebours (les logos ne sont pas ceux prévus)
  • Début de création de la Landing Page de l’application : https://zonny.me. Bon c’est vrai, j’avais dis que je me concentrais sur l’Alpha :p Promis, cela a été rapide : il s’agit d’un thème gratuit. Tout ce qu’il y a de plus basique, mais je vous le recommande : https://startbootstrap.com/template-overviews/new-age/. A la base, j’avais crée une Landing Page avec Materialize, mais prendre le thème était encore plus rapide ! Par contre, ne vous étonnez pas, il y a rien du tout sur le site.
Screen du site de présentation

Je crois avoir fait le tour pour ce soir ! N’hésitez pas à dire ce que vous en pensez ;) (Merci d’avance).

ZONNY continue d’avancer (et surtout l’Alpha !).

Les fonctionnalités de l’application Android augmentent progressivement (sélection des invités, création des événements…). Il reste tout de même encore du travail. Mais nous aurons peut-être une Alpha à vous proposer plus rapidement que prévu ;)

Je ne détaille pas cette fois ce que nous avons réalisé car j’image que vous (les lecteurs) êtes un peu perdus dans tout ce que je vous raconte ! (Est-ce le cas ?) Il faut admettre que je suis assez confus dans mes messages et que vous avez peut-être du mal à cerner ce que fait le projet. Je voulais savoir s’il fallait que je revoie la présentation du projet ?

J’ai également quelques questions à vous poser :

  • La première concerne l’interface de l’application. Sur le screen suivant quelques utilisateurs (famille et amis) m’ont fait la remarque que le bouton rouge (permet d’arriver sur le mode fantôme pour disparaître de la carte) n’avait pas sa place, qu’il serait trop près du bouton vert (Tab affichant l’historique des événements). Cette page est de toute façon accessible depuis le menu latéral. Du coup, qu’en pensez-vous ?
PS : je vous rassure la partie Map est plus avancée que ça !
  • La deuxième question est plus technique. L’application actuellement consomme beaucoup trop de batterie : 6 à 9% de batterie pour 15 à 20 minutes d’affichage. C’est 2 à 3 fois plus que Facebook ou Google Chrome !! Pourtant voici le screen des moniteurs (depuis Android Studio) quand j’exécute toutes les fonctionnalités à la suite de l’application. Savez-vous ce que je peux faire pour identifier la cause ? Actuellement, je suis entrain de regarder l’impact de chaque fonctionnalité sur la batterie (c’est très long puis c’est assez compliqué de situer exactement quel morceau de code est responsable). Je vais également penser à faire des tests sur d’autres téléphones (étant donné que mon téléphone est sur une ROM Custom assez instable pour le moment).
moniteurs

Merci d’avance pour vos réponses, suggestions, remarques :)

+0 -0

Bonjour !

L’alpha de ZONNY approche à grand pas. Elle devrait sortir dans les prochaines semaines ! C’est frustrant de devoir mettre des fonctionnalités indisponibles pour l’alpha alors qu’elles sont importantes grrrr.

La bonne nouvelle, c’est qu’il n’y a pas finalement de surconsommation de batterie par l’application. J’ai essayé un tas d’applications, frameworks … pour savoir d’où cela venait. Finalement, c’est juste mon portable qui était le responsable ! Le bon côté des choses avec cette histoire, c’est que je sais maintenant ce qu’il ne faut pas faire pour optimiser la consommation de batterie.

Aujourd’hui, il s’agissait de régler des problèmes concernant les layouts permettant la création d’événements. Si vous voulez-voir le dernier bug maintenant résolu (je sais c’est étrange de présenter seulement les bugs de son application mais bon!) :

PS: la taille des amis sur la carte sont à revoir je sais :lol:

La page permettant d’afficher les détails d’un événement avance beaucoup. Cependant, on s’est rendu compte qu’on avait oublié dans la maquette un truc important : des boutons pour répondre :euh: Le système de notification Push est maintenant fonctionnel: lors de l’arrivée d’un bon ami sur l’application ou d’une invitation à un événement, l’utilisateur reçoit une notification Push. Wahhh :p

Bon, clairement il reste du boulot. Le plus dur est de rester motivé ! Du coup toujours pas de retour concernant l’application ? Vos attentes ? Une fonctionnalité dont vous rêvez ? Ou au contraire il y a des trucs inutiles ?

+0 -0

Bon, comme certains m’ont fait remarquer que c’était étrange de parler uniquement des bugs, je vais présenter quelques screens ! C’est vrai que ça permet de se rendre compte davantage du résultat :p

Voici l’accueil :

L’affichage des événements sur la carte n’est pas encore fait

Le reste des vues est dans le bloc masqué en dessous car ça prend beaucoup de place!

Le menu :

Normalement toutes les pages importantes sont ici. La page Mes amis permet de choisir ses vrais amis parmi tous ceux

Est-ce que le A propos est vraiment nécessaire ?

La page permettant de se rendre invisible :

Mode fantôme

Le compte à rebours d’indisponibilité :

Compteur

On est définitivement convaincu qu’il manque quelque chose sur cette page. Elle fait complètement vide. En plus, on se demande si c’est instinctif que le bouton (le FAB) permette de se rendre à nouveau disponible. Vous trouvez ?

Ça sera tout ! Ne vous inquiétez pas, il n’y a pas que ça comme vues, mais le reste c’est un peu en bazar :lol:


Nous aimerions traiter le sujet de la sécurité de notre serveur. Si le serveur est une passoire c’est pas extra ! Existe-t-il des logiciels gratuits permettant de tester la robustesse de notre serveur ? J’aimerais tester si IPTables et OSSEC sont bien opérationnels par exemple (Merci encore @Dryusdan ;) ) Cela fait plusieurs mois que tout fonctionne mais la semaine dernière, le serveur n’était pas accessible pendant environ 1 heure. Cela permettrait de savoir si une "attaque" peut-être responsable en fait…D’ailleurs, si certaines personnes ont envie de s’amuser sur le serveur, vérifier la sécurité quoi, qu’ils n’hésitent pas hein! L’adresse est https://zonny.me/v1/docs Mais je doute qu’il y en ai !


Toujours dans le domaine de la sécurité, il s’agit maintenant du chiffrement des données personnelles. En effet, la CNIL impose le chiffrement de "toute information relative à une personne physique identifiée ou qui peut être identifiée, directement ou indirectement, par référence à un numéro d’identification ou à un ou plusieurs éléments qui lui sont propres." Étant donné que le serveur stocke le nom et la dernière position de l’utilisateur connue, il s’agit bien de données personnelles. Mais quand la CNIL parle de chiffrement, s’agit-il du chiffrement dans la base de données ou seulement des transmissions des données (HTTPS) ?

Merci d’avance pour vos commentaires :)

+0 -0

Ça avance plus vite que prévu !

  • Déportations de certains tâches qui étaient faites sur le portable (par l’application) comme le calcul du pourcentage de temps restant d’un événement. Maintenant c’est le serveur qui traite cette tâche par exemple.
  • Regroupement de certaines routes. Avant lors de l’ouverture d’un événement, il fallait que l’application fasse une requête pour récupérer les informations de l’événement puis une requête par participants pour obtenir la photo de profil et le prénom. Maintenant, une seule requête !
  • Correction d’un bug important : un utilisateur (bidouilleur certes :p) pouvait continuer de récupérer les informations d’un de ses amis Facebook même s’il ne le considérait pas comme un ami dans l’application.
  • Finalisation de la fonctionnalité de regroupement des éléments sur la carte (screen ci-dessous). Quand trop d’éléments sont dans la même zone alors ils sont regroupés ensemble.
  • Affichage des événements sur la carte. On a un peu revu le design par rapport aux maquettes (screen ci-dessous). On a ajouté une barre indiquant le temps restant "de vie" de l’événement ainsi que le nombre de participants. Il faut cependant qu’on travaille encore ce nombre, car si l’événement vient d’être crée on ne peut pas afficher "0 participant" :lol:
Accueil

Alors vous en pensez-quoi ?

Salut !

Est-ce que ce projet à un but autre que pédagogique ? Je veux dire par là est-ce que vous compter essayer de monter une structure et de gagner votre vie avec ou c’est plutôt un prétexte pour apprendre ?

Car il me semble qu’il existe déjà pas mal d’applications de ce type (j’en vois souvent passer sur maddyness) et que les applications qui scalent sont très difficiles à faire décoller (car quand personne n’utilise l’application son intérêt est proche de zéro).

Sinon c’est probablement un projet sympa pour progresser et de ce que je peux en juger vous avez l’air de bien avancer !

+3 -0

Je te rassure, je ne crois pas être le prochain Mark Zuckerberg avec l’idée de génie du siècle :lol: Comme tu le dis, ce projet est extrêmement intéressant d’un point de vue pédagogique. Cela va de la gestion d’un VPS, au codage de l’API en PHP, au développement sous Android tout en passant par l’apprentissage des bases du User interface design (UI). C’est génial ! En général, dès que j’apprends un langage je m’arrête rapidement car je n’ai pas de but précis. Ici au moins je suis motivé par ce projet.

Après, je crois tout de même en ZONNY. Sinon, j’aurai abandonné depuis longtemps :D La réussite d’un projet d’application, d’après moi, ne dépend pas que de l’application. Il y a beaucoup d’autres facteurs comme la détermination, la communication etc. Puis en cas de raté total, j’aurai essayé et gagné un tas de compétences à ajouter sur mon CV !

C’est vrai qu’il existe beaucoup d’applications plus ou moins similaires à celle-ci. Mais chacune se démarque des autres par quelques fonctionnalités. Et, je pense que, chaque développeur espère que ces fonctionnalités feront la différence ! Mais tu as vraiment raison sur le fait que si aucun ami de l’utilisateur n’utilise l’application, alors il la désinstallera. C’est le plus dur. Comment faire pour que l’utilisateur, s’il n’a aucun ami sur l’application, la garde et invite ses amis à l’utiliser ? C’est la grande question… Si vous avez des idées, n’hésitez pas !

Merci pour ton commentaire et tes remarques @Demandred ;)

Salut,

Pour parler un peu sécurité, notamment sur ton VPS :
- Tu as le port 21 (FTP) d’ouvert avec un serveur ProFTPD, tes identifiants FTP passent très certainement en clair sur le réseau. Regarde du côté de SFTP et FTPS.
- Tu semble avoir un fail2ban ou un système équivalent, c’est bien.
- Les port 53 (DNS) et 123 (NTP) sont ouverts, bizarre pour un service comme le tien, pour quelle raison ?
- Sachant que tu as du SSL pour accéder au site en HTTPS, en s’y connectant en HTTP on devrait être redirigé en HTTPS. Même si cela a peu d’impact pour un site statique, c’est mieux.
- Ça n’a plus l’air d’être le cas, mais tu utilisais webmin pour administrer ton serveur. Ouvrir une interface d’admin sur internet n’est pas une bonne pratique, heureusement que l’accès semble mort :pirate: :p

Il me semble également que ton debian 8 est à jour.

Ce n’est que des observations "passives" non exhaustives. On peut aller bien plus loin.

ShiiFu

Beau travail!

Je ne commenterai pas ce qui est technique, mais plutôt l’idée en générale:

D’abord vous avez découvert une perle, étant plutôt jeune je comprend tout de suite l’intérêt du projet. Organiser une petite rencontre au parc ou encore une sortie au resto, ce projet à définitivement un bel avenir si vous le portez à terme. Je ne suis pas un grand fan de l’utilisation des positions géographiques de notre téléphone, je trouves que c’est une intrusion inutile de la vie privée. Par-contre pour y placer des événements c’est très utile, je ne comprend simplement pas la nécessité de montrer à nos amis où on est dans cette application. On pourrait se contenter de savoir si l’on participe où non à l’événement et où est le lieu de celui-ci.

Sinon, c’est très intéressant d’aller dans un style complétement différent des autres applications, ce que vous nous proposer c’est de sortir dehors et non de rester chez soi sur son téléphone.

Voilà, c’est mon opinion! :D

@ShiiFu

  • J’ai donc fermé les ports 21, 53 et 123. En effet, les deux derniers ne servaient à rien et le SSH (22) fait l’affaire pour remplacer le FTP.
  • Pour la protection contre les attaques j’ai suivi le tuto conseillé par @Dryusdan. J’espère avoir bien configuré le tout… J’ai aussi installé l’OSSEC Web Interface. Cela ne pose pas de problème de sécurité, si ?
  • Normalement la redirection du HTTP vers le HTTPS était effective depuis plusieurs jours :euh: . Car en plus du site statique, il y a aussi l’API !
  • En effet, j’utilisais toujours webmin :honte: . Je viens de le désinstaller.

Merci pour tous ces conseils !


@Jay

Merci pour tes encouragements. Ça fait plaisir de voir que tu as saisi le projet :

« ce que vous nous proposer c’est de sortir dehors et non de rester chez soi sur son téléphone. ».

Jay

C’est exactement le but de l’application ! C’est notre définition d’un vrai réseau social.

Concernant la localisation de l’utilisateur, nous n’aimons pas non plus cela. C’est un peu paradoxal étant donné qu’on l’oblige dans l’application. Voici différents points :

  • Si l’utilisateur ne connait pas la position des amis à proximités, il se retrouvera peut-être à proposer des événements à des amis extrêmement loin de lui. Pour des événements spontanés éphémères (dans les moins de 24h), la distance entre l’utilisateur et ses amis est importante.
  • Pour les événements non personnalisés, ceux où l’utilisateur ne propose pas un événement défini mais signale seulement aux amis sélectionnés qu’il souhaiterait les voir, la position des amis est encore une fois importante : savoir si c’est possible de se voir rapidement, quoi faire, où se retrouver…
  • L’utilisateur part/revient en/de vacances. Cela peut être utile de savoir qui sont ses amis dans la même ville ou celles d’à côtés, non ?
  • Si plusieurs utilisateurs ne donnent pas leurs positions, pourquoi auraient-ils droit d’accéder à la position des amis qui eux la donnent ?

C’est un tas de questions/cas qui nous ont malheureusement poussés à forcer la localisation de l’utilisateur. Après, dans tous les cas nous faisons extrêmement attention à ces données. Premièrement, ces données seront chiffrées, JAMAIS vendues ou utilisées à d’autres fins. Secondement la localisation de l’utilisateur donnée sera toujours approximative (plus ou moins en fonction de la distance entre l’ami et l’utilisateur). Cela est expliqué plus haut. J’espère avoir été rassurant concernant ce point. Mais nous sommes ouverts à toutes suggestions/critiques !

Merci pour vos remarques ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte