#1451 Le 23/06/2013, à 13:42
- grim7reaper
Re : /* Topic des codeurs [8] */
Quelqu’un sait d’où ça peut venir ?
C’est dans le message (3 fois en plus ).
Et ça vient pas spécifiquement de mon code.
C’est la lib’ qui se connecte (en l’occurrence requests) qui n’aime pas le HTTPS à cause du certificat :
SSLError: hostname 'forum.ubuntu-fr.org' doesn't match '*.univ-nantes.fr'
Y’a probablement une option ou un truc à faire pour lui faire accepter.
Édit : du genre, ajouter
verify=False
en paramètre quand on appelle la méthode post
Dernière modification par grim7reaper (Le 23/06/2013, à 13:47)
Hors ligne
#1452 Le 23/06/2013, à 13:47
- ljere
Re : /* Topic des codeurs [8] */
il y a que les modos qui se connectent en https donc ce n'est pas super grave
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#1453 Le 23/06/2013, à 13:48
- grim7reaper
Re : /* Topic des codeurs [8] */
Non, moi aussi j’utilise le forum en HTTPS.
Mais c’est sûr que c’est sûrement pas la cas de la majorité des utilisateurs.
Dernière modification par grim7reaper (Le 23/06/2013, à 13:48)
Hors ligne
#1454 Le 23/06/2013, à 13:48
- Shanx
Re : /* Topic des codeurs [8] */
Shanx a écrit :Quelqu’un sait d’où ça peut venir ?
C’est dans le message (3 fois en plus ).
Et ça vient pas spécifiquement de mon code.
C’est la lib’ qui se connecte (en l’occurrence requests) qui n’aime pas le HTTPS à cause du certificat :SSLError: hostname 'forum.ubuntu-fr.org' doesn't match '*.univ-nantes.fr'
Y’a probablement une option ou un truc à faire pour lui faire accepter.
Édit : du genre, ajouter
verify=False
en paramètre quand on appelle la méthode post
J’ai honte. Je me suis concentré sur “hostname 'forum.ubuntu-fr.org' doesn't match '*.univ-nantes.fr'” ><’
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#1455 Le 23/06/2013, à 13:56
- ljere
Re : /* Topic des codeurs [8] */
ce qui est déjà bien c'est que tu peux utiliser kubuntu, xubuntu, etc... ça fonctionne
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#1456 Le 23/06/2013, à 14:01
- grim7reaper
Re : /* Topic des codeurs [8] */
Ouais, ça c’est sympa que ça soit pris en compte automatiquement
Bon boulot.
Hors ligne
#1457 Le 23/06/2013, à 14:20
- ljere
Re : /* Topic des codeurs [8] */
voila la résolution du problème requests bascule automatiquement en https donc j'ai forcé le http dans l'adresse donné et j'impose la redirection en https avec , allow_redirects=True
#!/usr/bin/python3
# coding: utf-8
# ========================================================================================
#
# Script de ljere
# license GPL V3 or later
#
# Description : script permettant de constituer un fichier log qui regroupe les diverses
# informations pouvant être nécessaire à la résolution des problèmes de wifi, le log sera
# placé dans votre home/user/ ainsi qu'envoyé directement sur le forum ubuntu-fr.org pour
# cela il est nécessaire d'avoir ouvert une discussion et d'en récupérer l'adresse,
# votre login, votre mot de passe et de lancer ce script en root.
#
# ========================================================================================
# -----------------------------------------------
# Ajout de bibliothèques utiles
# -----------------------------------------------
from subprocess import check_output
from tkinter import Tk, END, Label, Entry, Button, W, mainloop
from os.path import expanduser
from os import geteuid
from sys import exit, argv
import requests
import re
def gather_info():
"""Retrieve information about WiFi."""
sources = [ ('tag' , '[code]'),
('file', '/etc/lsb-release'),
('cmd' , 'uname -r -m'),
('cmd' , 'lsusb'),
('cmd' , 'lspci -k -nn | grep -A 3 -i net'),
('cmd' , 'lsmod'),
('tag' , '[/code]'),
('tag' , '[code]'),
('file', '/etc/network/interfaces'),
('cmd' , 'ifconfig -a'),
('cmd' , 'iwconfig'),
('cmd' , 'nm-tool'),
('tag' , '[/code]'),
('tag' , '[code]'),
('cmd' , 'sudo iwlist scan'),
('cmd' , 'sudo lshw -C network'),
('cmd' , 'sudo rfkill list'),
('tag' , '[/code]')]
info = []
for item in sources:
if item[0] == 'file':
with open(item[1], encoding='utf-8') as fp:
info.append(item[1] + '\n' + fp.read())
elif item[0] == 'cmd':
info.append(item[1] + '\n' + check_output((item[1]), shell=True).decode('utf-8'))
elif item[0] == 'tag':
info.append(item[1])
return '\n'.join(info)
class GUI(object):
def __init__(self):
self.wifi = gather_info()
# création du fichier log
with open(expanduser('~/wifi.log'), mode='w', encoding='utf-8') as fp:
fp.write(self.wifi)
root = Tk()
Label(root, text="Pseudo").grid(row=0)
Label(root, text="Password").grid(row=1)
Label(root, text="Adresse").grid(row=2)
self.login = Entry(root)
self.passw = Entry(root)
self.url = Entry(root)
self.login.insert(10,"pseudo du forum")
self.passw.insert(10,"mot de passe du forum")
self.url.insert(10,"adresse de votre discussion")
self.login.grid(row=0, column=1)
self.passw.grid(row=1, column=1)
self.url.grid(row=2 , column=1)
Button(root, text='Quitter', command=root.quit).grid(row=4, column=0, sticky=W, pady=4)
Button(root, text='Envoyer', command=self.fields).grid(row=4, column=1, sticky=W, pady=4)
root.mainloop()
# création de ma boite
def fields(self):
("Pseudo: {}\nPassword: {}\nURL: {}".format(self.login.get(),
self.passw.get(),
self.url.get()))
pseudo = self.login.get()
passwo = self.passw.get()
adress = self.url.get()
version = re.compile('://(.*)-fr').search(adress).group(1)
tid = self.url.get().split('=')[1]
# identification sur le forum
payload = { 'req_username' : pseudo, 'req_password' : passwo, 'redirect_url' : version+'-fr.org/', 'form_sent' : '1' }
r = requests.post('http://'+version+'-fr.org/login.php?action=in', payload, allow_redirects=True)
cookies = (r.cookies)
#envoi du contenu du log sur le forum
message = { 'req_message' : self.wifi, 'form_sent' : '1' }
requests.post('http://'+version+'-fr.org/post.php?tid='+tid, message, cookies=cookies, allow_redirects=True)
self.login.delete(0,END)
self.passw.delete(0,END)
self.url.delete(0,END)
if __name__ == '__main__':
# refus si le script n'est pas lancé en root
if not geteuid() == 0:
exit("\nCe script nécessite les droits root, lancez avec: sudo python3 " + argv[0]+ " \n")
GUI()
Dernière modification par ljere (Le 23/06/2013, à 14:50)
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#1458 Le 23/06/2013, à 14:31
- Rolinh
Re : /* Topic des codeurs [8] */
Bon ben si quelqu'un doit faire du datamining en python, je recommande vivement scikit. Elle est vraiment bien fichue et performante cette librairie. Par contre, nltk est bien pour faire du stemming et ce genre de chose mais l'implémentation des classifieurs n'est vraiment pas terrible (en tout cas pour ceux que j'ai testé et spécialement le support vector machine).
Sinon, ça marche bien le multithread en python? J'ai trop de temps de calcul là, faut que je fasse quelque chose.
Hors ligne
#1459 Le 23/06/2013, à 14:47
- grim7reaper
Re : /* Topic des codeurs [8] */
Sinon, ça marche bien le multithread en python?
Non, très mal. Voire pas du tout
Le vrai multithreading, ça n’existe ni en Python (vive le GIL \o/), ni en Ruby (vive le GVL (c’est la même chose que le GIL, mais avec un autre nom ).
Du moins tant que tu restes avec CPython (l’interpréteur de référence pour Python). Cela dit je crois qu’il y a un semblant de multithreading en cas d’I/O bloquante.
Édit : oui, je confirme :
CPython implementation detail: In CPython, due to the Global Interpreter Lock, only one thread can execute Python code at once (even though certain performance-oriented libraries might overcome this limitation). If you want your application to make better use of the computational resources of multi-core machines, you are advised to use multiprocessing or concurrent.futures.ProcessPoolExecutor. However, threading is still an appropriate model if you want to run multiple I/O-bound tasks simultaneously.
Par contre, si tu passes par Jython (Jruby pour Ruby) qui s’exécute sur une JVM ou par IronPython (IronRuby) qui s’exécutent sur la VM NET, là tu vas pouvoir avoir du vrai multithreading.
Du coup, en Python on fait plutôt du multiprocessing. Tu peux jeter aussi un œil à ça qui est une adaptation Python du framework Executor dispo' de base en Java (c’est un truc assez sympa d’ailleurs), mais bon c’est présent que depuis Python 3.2.
Dernière modification par grim7reaper (Le 23/06/2013, à 14:51)
Hors ligne
#1460 Le 23/06/2013, à 15:39
- Rolinh
Re : /* Topic des codeurs [8] */
Le vrai multithreading, ça n’existe ni en Python (...)
J'ai pensé qu'il pouvait y avoir un truc merdique comme en Ruby ^^
Du coup, en Python on fait plutôt du multiprocessing.
C'est ce vers quoi je me suis tourné finalement.
Bon, on doit rendre le travail ce soir, présentation mardi donc mercredi on devrait pouvoir publier les sources. Ça m'intéresserait d'avoir un avis d'expert python comme on en trouve sur ce topic car c'est la première fois que j'utilise un peu sérieusement Python (j'ai découvert des trucs qui me plaisent et d'autres qui ne me plaisent pas du tout ) et du coup je n'ai pas les bonne pratiques du langage. M'enfin, je trouve le code du projet pas trop mal fichu pour dire qu'on a bossé vraiment à la bourre. ^^
Dernière modification par Rolinh (Le 23/06/2013, à 15:40)
Hors ligne
#1461 Le 23/06/2013, à 18:09
- ljere
Re : /* Topic des codeurs [8] */
j'ai rajouté des sécurités (suggéré par nesthib) au cas ou il y aurait des fichiers manquants ou des commandes non fonctionnelles
#!/usr/bin/python3
# coding: utf-8
# ========================================================================================
#
# Script de ljere
# license GPL V3 or later
#
# Description : script permettant de constituer un fichier log qui regroupe les diverses
# informations pouvant être nécessaire à la résolution des problèmes de wifi, le log sera
# placé dans votre home/user/ ainsi qu'envoyé directement sur le forum ubuntu-fr.org pour
# cela il est nécessaire d'avoir ouvert une discussion et d'en récupérer l'adresse,
# votre login, votre mot de passe et de lancer ce script en root.
#
# ========================================================================================
# -----------------------------------------------
# Ajout de bibliothèques utiles
# -----------------------------------------------
from subprocess import check_output, CalledProcessError
from tkinter import Tk, END, Label, Entry, Button, W, mainloop
from os.path import expanduser
from os import geteuid
from sys import exit, argv, stderr
import requests
import re
def gather_info():
"""Retrieve information about WiFi."""
sources = [ ('tag' , '[code]'),
('file', '/etc/lsb-release'),
('cmd' , 'uname -r -m'),
('cmd' , 'lsusb'),
('cmd' , 'lspci -k -nn | grep -A 3 -i net'),
('cmd' , 'lsmod'),
('tag' , '[/code]'),
('tag' , '[code]'),
('file', '/etc/network/interfaces'),
('cmd' , 'ifconfig -a'),
('cmd' , 'iwconfig'),
('cmd' , 'nm-tool'),
('tag' , '[/code]'),
('tag' , '[code]'),
('cmd' , 'sudo iwlist scan'),
('cmd' , 'sudo lshw -C network'),
('cmd' , 'sudo rfkill list'),
('tag' , '[/code]')]
info = []
for item in sources:
if item[0] == 'file':
try:
with open(item[1], encoding='utf-8') as fp:
info.append(item[1] + '\n' + fp.read())
except (IOError, OSError) as e:
print('le fichier "%s" est introuvable' % item[1], file=stderr)
elif item[0] == 'cmd':
try:
info.append(item[1] + '\n' + check_output((item[1]), shell=True).decode('utf-8'))
except CalledProcessError:
print ("La commande '{}' n'a pas pu être exécuté.".format(item[1]), file=stderr)
elif item[0] == 'tag':
info.append(item[1])
return '\n'.join(info)
class GUI(object):
def __init__(self):
self.wifi = gather_info()
# création du fichier log
with open(expanduser('~/wifi.log'), mode='w', encoding='utf-8') as fp:
fp.write(self.wifi)
root = Tk()
Label(root, text="Pseudo").grid(row=0)
Label(root, text="Password").grid(row=1)
Label(root, text="Adresse").grid(row=2)
self.login = Entry(root)
self.passw = Entry(root)
self.url = Entry(root)
self.login.insert(10,"pseudo du forum")
self.passw.insert(10,"mot de passe du forum")
self.url.insert(10,"adresse de votre discussion")
self.login.grid(row=0, column=1)
self.passw.grid(row=1, column=1)
self.url.grid(row=2 , column=1)
Button(root, text='Quitter', command=root.quit).grid(row=4, column=0, sticky=W, pady=4)
Button(root, text='Envoyer', command=self.fields).grid(row=4, column=1, sticky=W, pady=4)
root.mainloop()
# création de ma boite
def fields(self):
("Pseudo: {}\nPassword: {}\nURL: {}".format(self.login.get(),
self.passw.get(),
self.url.get()))
pseudo = self.login.get()
passwo = self.passw.get()
adress = self.url.get()
version = re.compile('://(.*)-fr').search(adress).group(1)
tid = self.url.get().split('=')[1]
# identification sur le forum
payload = { 'req_username' : pseudo, 'req_password' : passwo, 'redirect_url' : version+'-fr.org/', 'form_sent' : '1' }
r = requests.post('http://'+version+'-fr.org/login.php?action=in', payload, allow_redirects=True)
cookies = (r.cookies)
#envoi du contenu du log sur le forum
message = { 'req_message' : self.wifi, 'form_sent' : '1' }
requests.post('http://'+version+'-fr.org/post.php?tid='+tid, message, cookies=cookies, allow_redirects=True)
self.login.delete(0,END)
self.passw.delete(0,END)
self.url.delete(0,END)
if __name__ == '__main__':
# refus si le script n'est pas lancé en root
if not geteuid() == 0:
exit("\nCe script nécessite les droits root, lancez avec: sudo python3 " + argv[0]+ " \n")
GUI()
Dernière modification par ljere (Le 23/06/2013, à 18:43)
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#1462 Le 23/06/2013, à 18:37
- grim7reaper
Re : /* Topic des codeurs [8] */
Ouais, c’est très bien.
J’aurais juste fait des messages un peu plus explicites, et je les aurais envoyés sur stderr (sortie d’erreur standard) Du genre :
print ('Le fichier {} n’est pas présent.'.format(item[1]), file=stderr)
print ("La commande '{}' n'a pas pu être exécuté.".format(item[1]), file=stderr)
Bien sûr, il faudra remplacer
from sys import exit, argv
par
from sys import exit, argv, stderr
Hors ligne
#1463 Le 24/06/2013, à 21:02
- Rolinh
Re : /* Topic des codeurs [8] */
(...) donc j'pense enfin m'y mettre sérieusement sous peu.
En tout cas, ça bouge pas mal depuis que j'ai mis mon CV "Système" avec mes expériences .NET. C'est cool.
Des bonnes nouvelles concernant ta recherche d'emploi? Ça a aboutit à quelque chose?
Et sinon, t'as pu faire quelque chose par rapport à ça?
Hors ligne
#1464 Le 24/06/2013, à 21:42
- The Uploader
Re : /* Topic des codeurs [8] */
J'ai un RDV après demain. Je pense que c'est une de mes dernières chances.
On m'a conseillé le site AFIJ mais je trouve que des offres où je ne correspond vraiment pas. Ou des offres d'entreprises où j'ai déjà eu une réponse négative.
Pour tout te dire ça me prend tellement la tête (surtout que j'ai des réponses génériques du genre "non en fait vous correspondez pas à nos besoins" ou "non la technologie X qui n'est pas dans l'annonce était importante en fait" >_< ) que quand je me mets sur RReader ça me rappelle que je devrais être en train de coder... mais dans le cadre d'un emploi.
Et que bientôt mon diplôme vaudra plus rien.
Et c'est peut-être ça le pire.
En plus le mieux c'est justement de travailler sur RReader :
- pour pas perdre la main
- pour avoir une expérience significative à mettre en plus sur mon CV
- pour pas "perdre" mon diplôme
Mais les recruteurs voient Ruby et s'arrêtent là. Le syndrome du recruteur-grep est omniprésent. Et Ruby à bordeaux ça n'existe quasiment pas en terme d'emplois.
</Soap Box>
Bref, je pense qu'à force de livrer une course contre le temps (cf. diplôme qui date de novembre), je vais devoir chercher des stages (qui aboutiront peut-être sur une embauche ou pas)
Déjà qu'avant je cherchais des CDD (pas que des CDI), et que j'avais franchement baissé mes prétentions salariales (ah oui mais faut pas dire trop bas pour "se vendre". Quelle logique !)
Du coup, ben RReader je vais voir ça après l'offre. D'ici là, j'vais maximiser mes chances pour l'avoir.
Mais si j'ai encore une réponse négative, je saurais vraiment plus quoi faire.
Erf, j'ai dit que je contribuerais, mais j'ai vraiment du mal à savoir où sont mes priorités. Plus les jours passent, plus je panique.
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1465 Le 25/06/2013, à 08:33
- The Uploader
Re : /* Topic des codeurs [8] */
- ajouter une scrollbar dans la liste des feeds. Le problème actuel est que s'il y trop de feeds, cela dépasse l'écran et il n'y a pas moyen de scroller.
On peut scroller avec une molette ou les flèches du clavier, mais c'est vrai qu'il n'y a pas de barre de défilement :
J'suis en train de voir ça vu qu'aujourd'hui je n'ai qu'à attendre mon train (en gros).
edit:
Il suffit d'un
position: relative;
au lieu d'un
position: absolute;
pour le style du div "feed_entries_list" pour avoir une barre de défilement. Mais elle est difficile à voir :
Hum...
Dernière modification par The Uploader (Le 25/06/2013, à 08:54)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1466 Le 25/06/2013, à 08:57
- Mindiell
Re : /* Topic des codeurs [8] */
Mais si j'ai encore une réponse négative, je saurais vraiment plus quoi faire.
De tout coeur avec toi.
Je connais personne là-bas, sinon j'aurai essayé d'aider avec plaisir.
Moi, j'ai finalement été pris à la Quadrature du Net, et c'est assez sympatoche !
Hors ligne
#1467 Le 25/06/2013, à 09:05
- The Uploader
Re : /* Topic des codeurs [8] */
Merci Mindiell.
Mais ce fil est plus sympa quand on parle code plutôt que de ma vie. ^^
A ce sujet, j'adore Firebug pour tout modifier/supprimer dans une page tout en ayant le résultat immédiatement.
C'est juste impossible de faire du dév' Web sans cette extension. <3
edit: Bon la scrollbar c'est bon j'pense
diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css
index 3c31370..3a3c4b8 100644
--- a/app/assets/stylesheets/application.css
+++ b/app/assets/stylesheets/application.css
@@ -67,11 +67,13 @@ body {
#settings-tabs { width: 100%; margin-top: 15px; }
.vsplitbar {
+ margin-left: 20px;
width: 15px;
background: #e1e1e1;
}
#feed_entries_list {
+ position: relative;
float:left;
height: 100%;
width: 50%;
edit : pas tout à fait (le contenu des articles est en partie invisible car "sous" la splitbar)
Et là, les directives CSS que je rajoute dans #preview sont ignorées (barrées dans Firebug).
Dernière modification par The Uploader (Le 25/06/2013, à 09:49)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1468 Le 25/06/2013, à 09:49
- Rolinh
Re : /* Topic des codeurs [8] */
@The Uploader: courage. La roue tourne comme on dit: les choses finiront bien par s'arranger.
Sinon, d'après tes screenshots, il y a quelques soucis au niveau du titre des articles. En principe, ils devraient rester sous la date, comme c'es le cas des screenshots dans le dossier screenshots. Je sais que c'est un peu délicat cette histoire de scrollbar. J'avais voulu en ajouter une en js mais il y avait quelques conflits avec le splitter. L'idéal serait une scrollbar en js qui n’apparaît que si nécessaire. Mais n'hésite pas à commiter tes changement, que je puisse tester ça.
Hors ligne
#1469 Le 25/06/2013, à 09:52
- Kanor
Re : /* Topic des codeurs [8] */
Mais les recruteurs voient Ruby et s'arrêtent là. Le syndrome du recruteur-grep est omniprésent. Et Ruby à bordeaux ça n'existe quasiment pas en terme d'emplois.
tu connais https://twitter.com/rubybdx ?
Mindiell, tu étais peut être à PSES ?
Hors ligne
#1470 Le 25/06/2013, à 12:22
- Mindiell
Re : /* Topic des codeurs [8] */
Mindiell, tu étais peut être à PSES ?
Nop, j'y étais point
Hors ligne
#1471 Le 26/06/2013, à 10:28
- :!pakman
Re : /* Topic des codeurs [8] */
Dites, je me pose une question, concernant les bases de données et les fichiers :
Si je prend, mettons, un site internet régulièrement enrichi d'articles au format HTML.
Les articles (HTML) sont ils en général directement et intégralement stockés dans la base de données, ou bien stockes t'on uniquement dans la base le chemin vers le fichier (ce qui nécessiterait de synchroniser la base (qui sert en fait d'indexe) quand on supprime un fichier sur le disque) ?
Tenez, autre cas, un peu différent, qui concerne le lien d'appartenance d'un fichier à un utilisateur : pour Google Drive, Dropbox voir même Youtube, chaque utilisateur a un compte. Chaque compte possède des fichiers de tous types (vidéos, sons, ...) uploadés par les utilisateurs. Comment est assuré la correspondance, le lien d'appartenance, entre le fichier et l'utilisateur ? Es que les fichiers sont copiés dans la base directement ? Ou bien ils sont stockés n'importe ou sur le disque, dans des dossiers, et à ce moment, seul la relation entre les utilisateurs et leurs fichiers est inscrite dans la base, mais pas les fichiers eux-mêmes ?
Dernière modification par :!pakman (Le 26/06/2013, à 13:36)
...
Hors ligne
#1472 Le 27/06/2013, à 18:54
- Rolinh
Re : /* Topic des codeurs [8] */
Les articles (HTML) sont ils en général directement et intégralement stockés dans la base de données, ou bien stockes t'on uniquement dans la base le chemin vers le fichier (ce qui nécessiterait de synchroniser la base (qui sert en fait d'indexe) quand on supprime un fichier sur le disque) ?
Vers le fichier... quel fichier? HTML tu veux dire? Sauf cas particulier ou le site est entièrement statique (genre mon blog), les pages HTML sont générées dynamiquement.
Seul le contenu de l'article est stocké en base de données.
Comment est assuré la correspondance, le lien d'appartenance, entre le fichier et l'utilisateur ?
Ça passe par une base de données. Pour les sites que tu cites, je t'avouerais que c'est quand même un peu plus compliqué que ça (plusieurs centaines de serveurs). Vu la charge de trafic, il y a du load-balancing, du caching et toutes sortes de choses de ce genre à gérer.
Es que les fichiers sont copiés dans la base directement ? Ou bien ils sont stockés n'importe ou sur le disque, dans des dossiers, et à ce moment, seul la relation entre les utilisateurs et leurs fichiers est inscrite dans la base, mais pas les fichiers eux-mêmes ?
Une base de données stockent des informations. Du texte quoi. Pas des fichiers multimedia ou autre, ce n'est pas prévu pour. C'est normalement la base de données qui te donne l'information pour savoir où récupérer le fichier.
@The Uploader: ça ne jouait pas finalement tes changements sur RReader? (il n'y a pas eu de commit de ta part)
Sinon, j'ai mis en ligne le petit projet de datamining en Python. Ça se trouve ici. J'ai voulu faire un miroir sur Github mais il n'a pas aimé mes fichiers JSON de datasets de plus de 50Mo.
D'ailleurs, si je veux les enlever du dépôt git et ne laisser qu'un petit fichier de database de max 50Mo, il y a moyen? Je veux dire, à cause de l'historique...
Bref, pour cloner:
git clone git://gw-computing.net/tweetmining.git
Ça m'intéresserait d'avoir des critiques constructive sur le code Python vu que c'est la première fois que je m'en sers vraiment.
Sinon, point de vue purement pratique de nos résultats (~90% de prédiction correct pour prédire si un tweet va être retweeté ou non) il y a peut-être quelques erreurs. Je sais notamment que j'ai généré le bag of words du dataset avec les occurrences de chaque mot sur le dataset entier, ce qui donne de l'information à priori lors de la phase d'entrainement des classifieurs. Mais bon, le faire au runtime sur un dataset de ~43'000 tweets c'est un peu trop coûteux, raison pour laquelle je l'ai fait a priori et que j'ai stocké l'information dans un fichier. Déjà que là, lancer le programme avec le tout (15 features, 14 classifieurs) c'est à dire première passe de classification pour tous les classifieurs puis cross-validation puis algorithm tournament, ça prend des plombes... Et ma pseudo-implémentation du multiprocessing est complétement boiteuse.
Autre chose sinon, j'aimerais mettre en place des tests pour ma bibliothèque qui permet de créer des fichiers AVI (libgwavi) qui est écrite en C. Quelqu'un connait un framework ou quelque chose de pratique pour mettre ça en place?
Encore autre chose: j'ai besoin d'écrire une petite application web quoi doit pouvoir communiquer avec un daemon via socket TCP et tourner sur un Linux embarqué (ARM cortex A8 @ 600Mhz). Il faut évidemment que la solution choisie ne prenne pas trop d'espace disque (petite mémoire flash pour le root filesystem) et qu'elle ne soit pas trop gourmande en RAM. Je m'étais demandé si Python + bottle pouvait faire l'affaire. Vous avez une suggestion? Je suis complément libre quant au choix de la technologie, il faut simplement que je puisse installer tout ce qu'il faut et faire tourner ça sur le matériel précité.
Hors ligne
#1473 Le 27/06/2013, à 19:30
- grim7reaper
Re : /* Topic des codeurs [8] */
Je ne sais pas si je vais avoir le temps de jeter un œil au code dans un futur proche, mais je vais essayer.
Autre chose sinon, j'aimerais mettre en place des tests pour ma bibliothèque qui permet de créer des fichiers AVI (libgwavi) qui est écrite en C. Quelqu'un connait un framework ou quelque chose de pratique pour mettre ça en place?
Si tu parles de tests unitaires, en C j’avais utilisé CUnit.
Ça me semblait pas mal (mais bon, j’avais pas non plus de gros besoins à l’époque)
Encore autre chose: j'ai besoin d'écrire une petite application web quoi doit pouvoir communiquer avec un daemon via socket TCP et tourner sur un Linux embarqué (ARM cortex A8 @ 600Mhz). Il faut évidemment que la solution choisie ne prenne pas trop d'espace disque (petite mémoire flash pour le root filesystem) et qu'elle ne soit pas trop gourmande en RAM. Je m'étais demandé si Python + bottle pouvait faire l'affaire. Vous avez une suggestion? Je suis complément libre quant au choix de la technologie, il faut simplement que je puisse installer tout ce qu'il faut et faire tourner ça sur le matériel précité.
Un jour j’avais eu un TP de ce genre (mais sur un truc encore moins puissant que ça encore). On avait utilisé Boa comme serveur web.
The primary design goals of Boa are speed and security. Security, in the sense of "can't be subverted by a malicious user," not "fine grained access control and encrypted communications". Boa is not intended as a feature-packed server; if you want one of those, check out WN from John Franks. Modifications to Boa that improve its speed, security, robustness, and portability, are eagerly sought. Other features may be added if they can be achieved without hurting the primary goals.
Hors ligne
#1474 Le 27/06/2013, à 19:30
- The Uploader
Re : /* Topic des codeurs [8] */
@The Uploader: ça ne jouait pas finalement tes changements sur RReader? (il n'y a pas eu de commit de ta part)
Je ne trouve pas pourquoi / comment mes modifications suivantes du CSS sont ignorées (elles sont barrées dans Firebug).
Ni dans les vues, ni dans le CSS je ne vois ce qui peut gêner.
En règle général, c'est juste un style hérité qui peut "bloquer" un style d'un élément enfant, non ?
Si je modifie directement le style dans le code HTML de la page avec Firebug, ça fonctionne. Mais ça me dit juste que ma solution est bonne (l'article à droite devient entièrement visible).
Maintenant faudrait pouvoir faire en sorte qu'elle soit prise en compte.
Sinon hier j'suis revenu de mes derniers rdv à Bordeaux (d'où le non-avancement).
edit : j't'ai envoyé un mail au sujet des commits / du workflow.
Autre chose sinon, j'aimerais mettre en place des tests pour ma bibliothèque qui permet de créer des fichiers AVI (libgwavi) qui est écrite en C. Quelqu'un connait un framework ou quelque chose de pratique pour mettre ça en place?
J'ai entendu parler de CUnit ou MinUnit
Pas testé.
Mon prof d'Agile m'disait que le C se prêtait mal au TDD. Mais ça veut pas dire que c'est impossible.
Dernière modification par The Uploader (Le 27/06/2013, à 19:47)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1475 Le 27/06/2013, à 19:46
- Rolinh
Re : /* Topic des codeurs [8] */
Je ne sais pas si je vais avoir le temps de jeter un œil au code dans un futur proche, mais je vais essayer.
Cool. C'est environ 1250 lignes de python (sans les commentaires et les lignes vides) donc pas trop encore et le code est plutôt simple. Il y a un schéma de l'architecture dans le PDF du rapport à la racine.
Si tu parles de tests unitaires, en C j’avais utilisé CUnit.
Ça me semblait pas mal (mais bon, j’avais pas non plus de gros besoins à l’époque)
Oui, c'est bien ça. Je vais y jeter un coup d’œil alors, merci.
Un jour j’avais eu un TP de ce genre (mais sur un truc encore moins puissant que ça encore). On avait utilisé Boa comme serveur web.
J'étais tombé sur Boa en faisant quelques recherches. Tu l'avais trouvé bien? Quel langage avais-tu utilisé?
Je ne trouve pas pourquoi / comment mes modifications suivantes du CSS sont ignorées (elles sont barrées dans Firebug).
Ni dans les vues, ni dans le CSS je ne vois ce qui peut gêner.
Ah?
En règle général, c'est juste un style hérité qui peut "bloquer" un style d'un élément enfant, non ?
Je ne suis pas sûr de comprendre la question pour le coup.
Sinon hier j'suis revenu de mes derniers rdv à Bordeaux (d'où le non-avancement).
Ok. Des bonnes nouvelles?
J'ai entendu parler de CUnit ou MinUnit
Pas testé.
Mon prof d'Agile m'disait que le C se prêtait mal au TDD. Mais ça veut pas dire que c'est impossible.
Bon, ça en fait un autre à regarder.
Pour le coup, une lib sans tests unitaires, personnellement, je ne fais pas confiance. Je verrais bien ce que ça donne.
Hors ligne