jeudi 23 juillet 2015

'Learn MySQL in one video' by Derek Banas on Aug 29, 2014

http://www.newthinktank.com/2014/08/mysql-video-tutorial/
https://www.youtube.com/watch?v=yPu6qV5byu4

Tutoriel intéressant et très bien fait. Il y a quelques adaptations à faire comme toujours. Juste des détails, peut-être que ça pourra servir à quelqu'un... Si ça va trop vite, rappelez vous que vous pouvez réduire la vitesse des vidéo Youtube ;-)

1) MySQL en ligne de commande

La commande proposé n'a pas fonctionné chez moi :
mysql5 -u mysqladmin -p

Ayant installé MySQL vie XAMPP, j'ai du d'abord me positionner dans le bon répertoire.
cd c:\xampp\mysql\bin

J'ai ensuite entrée :
.\mysql.exe -u root

Je n'ai pas encore de mot de passe pour l'utilisateur root de ma base MySQL. Sinon j'aurais ajouté --password en fin de ligne. Signalons que le -u sert à indiquer le nom d'utilisateur, ici 'root'. Dernière remarque : j'ai commencé par .\ parce que j'ai utilisé PowerShell (et non CMD) qui ne charge pas de commandes à partir de l'emplacement actif.

2) Recréer la base...

En suivant le tutoriel, vous allez entrer à un moment donné :
DROP DATABASE IF EXISTS test3
Ensuite, même si ce n'est pas indiqué, vous devrez créer une autre base et vous y connecter :
CREATE DATABASE university;
USE university;
Il appelle sa base 'teste3', mais vu que la base contiendra une table 'test' (c'est à dire contrôle/épreuve), je vous conseille de la nommer autrement (par exemple 'university') pour plus de clarté.

3) Les INSERT INTO

Vous devez les copier-coller à partir du site de Derek. Malheureusement la plateforme web sur laquelle il a publié son tuto vient d'ajouter des numéro de ligne au début de chaque ligne. Je vous laisse entrer le premier INSERT à la main, mais pour la suite, voici le copié-collé :

INSERT INTO student VALUES('Harry', 'Truman', 'htruman@aol.com',
'202 South St', 'Vancouver', 'WA', 98660, '792-223-9810', "1946-1-24",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Shelly', 'Johnson', 'sjohnson@aol.com',
'9 Pond Rd', 'Sparks', 'NV', 89431, '792-223-6734', "1970-12-12",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Bobby', 'Briggs', 'bbriggs@aol.com',
'14 12th St', 'San Diego', 'CA', 92101, '792-223-6178', "1967-5-24",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Donna', 'Hayward', 'dhayward@aol.com',
'120 16th St', 'Davenport', 'IA', 52801, '792-223-2001', "1970-3-24",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Audrey', 'Horne', 'ahorne@aol.com',
'342 19th St', 'Detroit', 'MI', 48222, '792-223-2001', "1965-2-1",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('James', 'Hurley', 'jhurley@aol.com',
'2578 Cliff St', 'Queens', 'NY', 11427, '792-223-1890', "1967-1-2",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Lucy', 'Moran', 'lmoran@aol.com',
'178 Dover St', 'Hollywood', 'CA', 90078, '792-223-9678', "1954-11-27",
'F', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Tommy', 'Hill', 'thill@aol.com',
'672 High Plains', 'Tucson', 'AZ', 85701, '792-223-1115', "1951-12-21",
'M', NOW(), 3.50, NULL);

INSERT INTO student VALUES('Andy', 'Brennan', 'abrennan@aol.com',
'281 4th St', 'Jacksonville', 'NC', 28540, '792-223-8902', "1960-12-27",
'M', NOW(), 3.50, NULL);

Et un autre.

INSERT INTO class VALUES
('English', NULL), ('Speech', NULL), ('Literature', NULL),
('Algebra', NULL), ('Geometry', NULL), ('Trigonometry', NULL),
('Calculus', NULL), ('Earth Science', NULL), ('Biology', NULL),
('Chemistry', NULL), ('Physics', NULL), ('History', NULL),
('Art', NULL), ('Gym', NULL);

Un dernier.

INSERT INTO score VALUES
(1, 1, 15),
(1, 2, 14),
(1, 3, 28),
(1, 4, 29),
(1, 5, 15),
(1, 6, 27),
(2, 1, 15),
(2, 2, 14),
(2, 3, 26),
(2, 4, 28),
(2, 5, 14),
(2, 6, 26),
(3, 1, 14),
(3, 2, 14),
(3, 3, 26),
(3, 4, 26),
(3, 5, 13),
(3, 6, 26),
(4, 1, 15),
(4, 2, 14),
(4, 3, 27),
(4, 4, 27),
(4, 5, 15),
(4, 6, 27),
(5, 1, 14),
(5, 2, 13),
(5, 3, 26),
(5, 4, 27),
(5, 5, 13),
(5, 6, 27),
(6, 1, 13),
(6, 2, 13),
# Missed this day (6, 3, 24),
(6, 4, 26),
(6, 5, 13),
(6, 6, 26),
(7, 1, 13),
(7, 2, 13),
(7, 3, 25),
(7, 4, 27),
(7, 5, 13),
# Missed this day (7, 6, 27),
(8, 1, 14),
# Missed this day (8, 2, 13),
(8, 3, 26),
(8, 4, 23),
(8, 5, 12),
(8, 6, 24),
(9, 1, 15),
(9, 2, 13),
(9, 3, 28),
(9, 4, 27),
(9, 5, 14),
(9, 6, 27),
(10, 1, 15),
(10, 2, 13),
(10, 3, 26),
(10, 4, 27),
(10, 5, 12),
(10, 6, 22);

Les lignes qui commence par # sont des commentaires, vous pouvez les laisser.
Et n'oubliez pas les absences :

INSERT INTO absence VALUES
(6, '2014-08-29'),
(7, '2014-08-29'),
(8, '2014-08-27');

4) Mais comment fait-il pour effacer l'écran ?

La vidéo a été réalisé avec la version Mac OS X de MySQL qui permet d'utiliser le raccourci :
ctrl-L

Sous Windows, c'est pour l'instant impossible, à cause d'un bug connu.
Même : system clear; ne fonctionne pas...

5) Mettre le nom des tables au pluriel ou au singulier ?

À 21mn30, on vous propose de renommer au pluriel.
C'est un bon exercice, mais je vous conseille si vous avez le choix de nommer les tables au singuliers, de façon à conserver le pluriel pour nommer les collections.
À lire : http://stackoverflow.com/a/342623

6) Moins vite ?

Youtube permet désormais de ralentir la vitesse de ses vidéos de moitié (dans paramètre). Par contre, les sous-titres anglais générés automatiquement n'aident vraiment pas. Déjà que les sous-titre pour un tuto, comment dire...

7) Auto-complétion ?

Sur la vidéo, on remarque que la touche tab est utilisé pour l'auto-complétion : c'est à dire qu'on écrit un début de nom de table ou de colonne, puis un simple appuie sur TAB permet de compléter. Ça fonctionne sur Linux et OS X, pas sur Windows à ma connaissance.

Conclusion

Ce tutoriel présente entre autre une très simple et très efficace présentation de
  • group by
  • having
  • join...
Il permet de se remémorer les bases de SQL en une heure. À garder sous le coude en cas de besoin ;-)

dimanche 5 juillet 2015

"Java Basics Course" on http://teamtreehouse.com/

http://teamtreehouse.com/library/java-basics

<< In this course you will gain all the knowledge you will need to build an interactive command line program in Java. No prior programming experience is required. You will create an interactive game that prompts users for different parts of a sentence and then generates a story using those words. >>

Ce premier cours se termine en environ trois heures.
C'est payant (il faut s'abonner).
C'est sympa, c'est bien fait, mais ça n'intéressera que les débutants complets.

Pas d'installation d'IDE, puisque le site propose un workspace en ligne.

String
console.printf()
console.readLine()
Errors
int
Integer.parseInt()
if
do while
boolean
scope

Voilà, tout le programme est là.
À conseiller (et à réserver) aux débutants donc.

Bon, ça peut-être une façon de réviser un l'anglais - on peut activer des sous-titres (en anglais) et faire varier la vitesse du débit vidéo - ou de de découvrir des méthodes de e-learning moderne - pour ceux qui, comme moi, s'intéresse au e-learning -.

"Conception d'applications en Java/JEE", prises de notes 01

Conception d'applications en Java/JEE
Principes, patterns et architectures

Jacques Lonchamp
2014 - 416 pages - 170x240 mm
<< Ce manuel explique les méthodes de la conception orientée objets. Il détaille les patrons de conception (design patterns), les principes de conception qui les sous-tendent et les principales architectures logicielles, en particulier les architectures web. Il s'appuie sur le langage Java. Il présente pour chaque thème abordé plusieurs exemples et rassemble 58 exercices tous corrigés, ainsi que deux études de cas : JSE (Java Standard Edition) et JEE (Java Enterprise Edition) détaillées jusqu'au code complet. >>

http://www.dunod.com/informatique-multimedia/developpement/java/ouvrages-denseignement/conception-dapplications-en-javajee

On m'a recommandé ce bouquin pas comme les autres, et je dois dire que pour l'instant, je suis assez convaincu par le concept. Pour me motiver à l'étudier régulièrement, je m'impose ce petit suivi sur un blog ouvert pour l'occasion.

Au niveau du plan, schématiquement ça donne à peu près cela :

1 - intro

Rappels de cours
2 - java/JEE
3 - UML

Patrons
4 - de construction
5 - de structure
6 - de comportement
7 - etc.

Principes
8 - SOLID
9 - etc.

Architectures
10 - description et classification
11 - en couches
12 - en flot de données
13 - MVC
14 - web
15 - réflexives

Étude de cas
16 - JSE
17 - JEE

Quelques notes sur l'introduction :
(J'apprends mieux en notant, en ce qui vous concerne, si vous avez atterri ici, lisez le livre)

Processus itératifs et incrémentaux (méthodes agiles)

Modèle objet décrit :
- objets et classes nécessaires
- leurs interfaces
- leurs regroupement en paquets
- leurs dépendances

Dépendances :
- directes (A->B)
- transitives (A->C->B)
- cycliques (A->B->C->D->A) ... à éviter absolument.
=> Minimisation des dépendances facilite maintenance.

L'introduction se termine déjà sur un petit exercice sympathique, quoique un peu abstrait.
La correction est claire. Ma réponse était assez proche.
Ma bonne impression sur ce livre se confirme.
La suite au prochain épisode.