PC Easy Weblog

août 30, 2009

Winx Video Converter – Convertir une vidéo de pinnacle pour la lire sur mon DDM Storex

Filed under: Utilitaires — Étiquettes : , , — trucmuche92 @ 11:43

digiartyJ’en ai cherché des softs gratuits et plutôt simple d’utilisation pour diminuer la taille des vidéos enregistrée depuis TV Center Pro de Pinnacle, et je crois que je viens de trouver celui qui me convient, il s’agit de Winx Video Converter de Digiarty software.

Le challenge est de réduire une vidéo enregistrée au format DivX home cinema (pour avoir une définition qui tient la route)  qui pèse quand même 2,9 Go pour un film de 1h30, vers quelque chose de plus petit, environ 0,9Go.

L’autre challenge est d’avoir au final une vidéo qui supporte les fonctionnalités de mon disque dur multimédia Storex mpix 353, qui pour certaines vidéos compressées par d’autres logiciels ne permet pas d’effectuer une avance rapide du film, ou de positionner le film à un temps précis, pour reprendre une lecture par exemple.

Enfin il s’agit d’employer un soft simple car je n’y connais rien en format vidéo.

Winx Video Converter a ceci en plus qu’il peut convertir à la suite plusieurs vidéos (avec possibilité de fermeture de Windows quand tout est fini), et que pour chaque vidéo, deux curseurs permettent d’éliminer des émissions parasites avant et après la vidéo.

Voici une capture de Winx Video Converter Avec le paramétrage que j’utilise :

winx video converter

  • Onglet to AVI
  • Video format : DivX
  • Il faut cocher Use high quality video
  • Afin d’avoir au final une taille inférieure à 1Go avec une qualité acceptable, je valorise  Video Quality à 1100
  • Je ne touche à rien d’autre sauf l’Output folder (répertoire de destination des vidéos converties)

Pour info, avec ce paramétrage, il faut 35 minutes pour convertir un film d’1h30.

Winx Video Converter a aussi son petit frère qui est WinX Free iPhone Video Converter, qui est un autre logiciel gratuit et qui permet de convertir des vidéos pour son iPhone.

août 7, 2009

Pinnacle – AC3 decoder et pas de son pour TF1 – Pas de souci !

Filed under: Pinnacle, Tv — trucmuche92 @ 12:57

Suite à l’installation du soft TV Center PRO vendu avec la clé tuner tv de Pinnacle (Nano Stick Ultimate), je n’ai pas de son sur ma chaîne préférée TF1, c’est le drame, d’autant plus qu’il y a Secret Story en ce moment.
Le message affiché est le suivant :

« AC3 decoder (stereo downmix) est nécessaire pour pouvoir écouter le son sur cette chaîne. Souhaitez-vous acheter AC3 decoder (stero downmix) maintenant ? …etc… »

ac3 decoder acheter pinnacle

Pas de soucis, il suffit de cliquer droit (n’importe où sur la fenêtre Pinnacle) de sélectionner le sous-menu Audio… et de désélectionner Français – AC3 audio pour choisir à la place Français – MPEG audio.

audio pinnacle

juillet 24, 2009

Edition de MP3 Tag – le logiciel que je cherchais

Filed under: mp3 — trucmuche92 @ 5:51

Simple, clair et efficace MP3TAG est l’outil idéal pour éditer les fameux tags relatifs au fichiers MP3 (Artiste, Titre, album, etc…).
Jusque là je pouvais me passer d’éditer ces informations, mais depuis que je suis équipé de lecteurs portables qui utilisent principalement ces éléments au lieu du nom du fichier (dans le genre iPhone et sont iTunes), j’ai dû trouver une solution.

L’intérêt de cet outil réside dans la fonctionnalité d’édition automatique des tags depuis le nom du fichier. Aussi, si comme moi vous avez pris le soin de nommer vos fichiers MP3 correctement (Jimi Hendrix – Little wing.mp3 par exemple c’est à dire artiste suivi d’un tiret puis suivi du titre), le programme pourra automatiser l’édition des tags et la manip sera rapide.

La manip inverse est possible, à savoir de renommer le fichier à partir de ses tag.

Avant :

id3tag avantRemarque : le format de reconnaissance artiste/titre/séparateur/autres infos est bien entendu éditable comme on le voit dans la fenêtre de dialogue ci-dessus.

Après :

id3tag zaprez

Petite astuce : trier les fichiers par artiste ou titre pour intercepter et sélectionner rapidement les fichiers qui ne sont pas taguer.

Télécharger à http://www.mp3tag.de/en/download.html

juillet 22, 2009

WI-FI – Partager sa connexion internet vers un I-Phone (VISTA)

Filed under: IPhone — Étiquettes : , — trucmuche92 @ 4:24
wifi

wifi

Etant donné que je suis toujours équipé d’un vieux modèle de modem ADSL par cable (du genre SpeedTouch d’alcatel pour Orange), je n’ai pas la possibilité de connecter mon IPhone à une Livebox ou autre FreeBox. Pour établir un mini réseau WI-FI entre mon PC (vista) et mon IPhone et ainsi bénéficier de la connection Internet, il faut créer un réseau sans fil dit ad hoc (il existe peut être une autre méthode, celle-ci fonctionne).

1 – Accéder au Centre réseau et partage (via le Panneau de configuration)
Dans la partie gauche de la fenêtre cliquer sur Gérer les réseaux sans fil.

wifi00

2 – Dans la fenêtre suivante, cliquer sur Ajouter

wifi02

3 – Dans la fenêtre d’options suivante sélectionner la 3ème option : Créer un réseau ad hoc

wifi03

4 – Passer la fenêtre explicative du réseau dit ad hoc : cliquer suivant

wifi04

5 – Définir les propriétés du réseau

Je baptise le réseau partage_connexion en type de sécurité Aucune authentification donc sans mot de passe, et je coche Enregistrer ce réseau sans savoir à quoi sert cet dernière option.
Il serait préférable de choisir un type de réseau sécurisé (exemple de type WEP avec un mot de passe de 5 caractères), mais pour la démo ça suffira.

wifi05

6 – La dernière étape de l’assistant recommande le partage de connexion internet, c’est pour ça qu’on a fait tout ça, donc on clique dessus et on ferme.

wifi06

Résultat des courses :

wifi07

Voilà, le mini réseau WI-FI est créé.

Côté IPhone, il s’agit d’aller dan Reglages, WI-FI, Choisissez un réseau…, et de sélectionner notre nouveau réseau partage_connexion qui devrait naturellement être proposé dans la liste, parmi d’autres réseaux environnants.

juillet 4, 2009

WIndows XP – Ouvrir l’explorer de fichiers avec le paneau d’arborescence

Filed under: windows — trucmuche92 @ 11:00

win file explorerSur XP, Lorsqu’on créé un raccourci vers un répertoire et que par la suite on click sur ce raccourci, l’explorer de fichiers Windows s’ouvre mais toujours avec le fameux paneau de gauche qui ne sert à rien (en tout cas pas à moi). L’idéal étant d’avoir à la place le panneau présentant l’arborescence des lecteurs, répertoires et fichiers.

Voici le paramétrage du raccourci à mettre en place pour accéder au lecteur C: (par exemple) avec l’arborescence à gauche :

%windir%\explorer.exe /n,/e,c:\

Ou, pour pointer vers le répertoire des programmes :

%windir%\explorer.exe /n,/e,c:\Program Files

Ce paramétrage est à saisir dans la zone Cible, l’onglet Raccourci, des propriétés du raccourci.

Il y a peut-être des paramètres en trop, mais en tout cas, ça fait ce que je souhaite.

mai 18, 2009

SQL Server – UPDATE de lignes d’une table par un SELECT

Filed under: Développement, Utilitaires — Étiquettes : , , , — trucmuche92 @ 9:26

Pour ceux qui comme moi ne se rappelaient plus comment on mettait à jour une table à partir d’un SELECT voici un mémo :

Le principe est de se représenter dans un premier temps un SELECT (multi-table) qui contient la table que l’on veut mettre à jour.

L’exemple ci-dessous mettra a jour le champ-flag ACTIF d’une table PRODUIT en fonction du champ VISIBLE du d’une table d’association CATALOGUE_PRODUIT dans lequel il est.

1 – Représentation en SELECT

select p.pro_actif, c.pro_visible, etc…
from PRODUIT p
inner join  CATALOGUE_PRODUIT c
on p.pro_codesap = c.pro_codesap

2 – Pour la commande d’UPDATE, on dégage la partie SELECT pour la remplacer par la syntaxe UPDATE

update p set p.pro_actif = c.pro_visible, p.datmaj = getdate()
from PRODUIT p
inner join  CATALOGUE_PRODUIT c
on p.pro_codesap = c.pro_codesap

On remarquera l’importance du raccourci (alias) p pour la table PRODUIT qui est représentée à la fois pour la table du SELECT et la table de l’UPDATE.

Remarque : on ne peut mettre à jour que les champs d’une table.

avril 24, 2009

CSharp – Evennement & Delegate & EventArgs, pour que ce soit clair

Filed under: Développement, Utilitaires — Étiquettes : , — trucmuche92 @ 11:02

Voici pas à pas les éléments à mettre en place pour exploiter de l’évennementiel depuis un UserControl.
L’exemple fournie illustre un UserControl qui est inclus dans les éléments d’une liste (un Datalist par exemple), ce Usercontrol déclenche un évennement lorsque l’utilisateur ajoute une quantité à son panier (dans le cas d’une boutioque en ligne).

1 – Définir un évennement (=définir un Delegate)

On créée un Delegate que l’on nomme UCMAJPanierEventHandler.
Un Delegate se situe au même niveau qu’une Class, il n’est donc pas à mettre en place à l’intérieur d’une Class ou d’un UserControl

Version Basique :

public delegate void UCMAJPanierEventHandler(object sender, EventArgs e);

object sender et EventArgs e sont la signature de base.
Si lors de l’évennement on veut transmettre des information supplémentaires, on peut créer une classe qui hérite de la classe EventArgs :

 public class UCMAJPanierEventArgs : EventArgs
 {
      public string pro_codesap;
       public string quantite;
 }

Dès lors la définition du Delegate deviendra :

public delegate void UCMAJPanierEventHandler(object sender, UCMAJPanierEventArgs e);

2 – Ajouter à son controle la possibilité d’utiliser ce Delegate en tant que Sender

 public partial class UCDetailProduit : System.Web.UI.UserControl
 {
      public event UCMAJPanierEventHandler UCMajPanier;
      ...
      ...
 }

On déclare donc un événement du type UCMAJPanierEventHandler, et au même titre qu’une propriété (exemple string), on lui donne un Nom (UCMajPanier)
Pour être accessible aux autres Controles, Pages, il doit être Public.

Pour « Raiser » l’Evt, la commande est this.UCMajPanier(this, args) où args est l’objet qui supporte les arguments que l’on veut envoyer avec l’événement.
Il est nécessaire de tester préalablement si L’événement est branché par un Controle « receveur » sinon cela génère une exception d’où if (this.UCMajPanier != null).

public partial class UCDetailProduit : System.Web.UI.UserControl
 {
    public event UCMAJPanierEventHandler UCMajPanier;
    ...
    ...
    protected void btn_ajouter_panier_Click(object sender, EventArgs e)
    {
        if (this.UCMajPanier != null)
        {
            UCMAJPanierEventArgs args = new UCMAJPanierEventArgs();
            args.pro_codesap = hidden_prd_code.Text;
            args.quantite = txt_qte.Text;
            this.UCMajPanier(this, args);
        }
    }
    ...
    ...
 }

3 – Connexion du Sender au Receveur

Lors de la génération du Controle Sender dans le Datalist, il faut créer une « connexion » entre le Sender et celui qui va gérer la réception de l’évennement.
Pour un Datalist, le moment idéal est l’evennement Item_Created :

public partial class prod_liste System.Web.UI.Page
{
....
 ....
protected void dlProduits_ItemCreated(object sender, DataListItemEventArgs e)
{
    if ((e.Item.ItemType == ListItemType.AlternatingItem) || (e.Item.ItemType == ListItemType.Item))
    {
        UCDetailProduit dp = e.Item.FindControl("UCDetailProduit") as UCDetailProduit;
        if (dp != null)
        {
           dp.UCMajPanier += new UCMAJPanierEventHandler(ProduitAjouterAuPanier);
        }
    }
    }
    ....
    ....
    protected void ProduitAjouterAuPanier(object sender, UCMAJPanierEventArgs e)
    {
        DataService.UpdatePanier(e.pro_codesap, e.quantite);
    }
    }

mars 3, 2009

SQL Server – ROW_NUMBER(), l’équivalent du ROWNUM d’Oracle

Filed under: Développement — Étiquettes : — trucmuche92 @ 8:54

Avec SQL Server 2005, on cette nouvelle fonction qui permet de numéroté d’une façon distinct chaque ligne : ROW_NUMBER()

Prenons par exemple le contenu de la table suivante :

select codex, commune from villes
codex commune
----- --------------------
02300 ABBECOURT
20243 ABBAZIA
25320 ABBANS DESSOUS
25440 ABBANS DESSUS
44170 ABBARETZ
54610 ABAUCOURT
55130 ABAINVILLE
55400 ABAUCOURT HAUTECOURT
59268 ABANCOURT
60220 ABANCOURT
60430 ABBECOURT
64460 AAST

Il s’agit donc de numéroter chaque ligne, mais ROW_NUMBER() nécessite de préciser sur quelle champ on défini l’ordre de numérotation.
Aussi la syntaxe exacte pour le champ qui reçoit la numérotation est  :

ROW_NUMBER() over(order by champ)

Avec le jeu de données ci-dessus, on pourra numéroter les lignes par ordre croissant de commune :

select codex, commune, row_number() over(order by commune) as num
from villes 
codex commune              num
----- -------------------- --------------------
64460 AAST                 1
55130 ABAINVILLE           2
59268 ABANCOURT            3
60220 ABANCOURT            4
54610 ABAUCOURT            5
55400 ABAUCOURT HAUTECOURT 6
25320 ABBANS DESSOUS       7
25440 ABBANS DESSUS        8
44170 ABBARETZ             9
20243 ABBAZIA              10
02300 ABBECOURT            11
60430 ABBECOURT            12

On remarquera la fonction ROW_NUMBER() filera toujours un numéro distinct, même si le champ sur lequel est poser la numérotation est le même d’une ligne à l’autre (commune ABANCOURT), il s’agit donc bien d’un numéro de ligne.

On pourra conserver la numérotation ci dessus, mais en présentant les données ordonnées par code postale

select codex, commune, row_number() over(order by commune) as num
from villes order by codex
codex commune              num
----- -------------------- --------------------
02300 ABBECOURT            11
20243 ABBAZIA              10
25320 ABBANS DESSOUS       7
25440 ABBANS DESSUS        8
44170 ABBARETZ             9
54610 ABAUCOURT            5
55130 ABAINVILLE           2
55400 ABAUCOURT HAUTECOURT 6
59268 ABANCOURT            3
60220 ABANCOURT            4
60430 ABBECOURT            12
64460 AAST                 1

Ca c’est interressant !

Pour aller plus loin :

– on peut compléter la partie order by par des champs complémentaires :

select codex, dpt, commune,
row_number() over(order by Dpt asc, commune desc) as num
from villes

– ROW_NUMBER() a aussi son petit frère RANK() qui effectue un classement :

select codex, commune, rank() over(order by commune) as num
from villes order by commune
codex commune              num
----- -------------------- --------------------
64460 AAST                 1
55130 ABAINVILLE           2
59268 ABANCOURT            3
60220 ABANCOURT            3
54610 ABAUCOURT            5
55400 ABAUCOURT HAUTECOURT 6
25320 ABBANS DESSOUS       7
25440 ABBANS DESSUS        8
44170 ABBARETZ             9
20243 ABBAZIA              10
02300 ABBECOURT            11
60430 ABBECOURT            11

février 27, 2009

SQL Server – Tableau croisé oui, dynamique non

Filed under: Développement — Étiquettes : , — trucmuche92 @ 9:12

MS Access fournie une commande SQL qui permet de faire des requêtes SELECT de type tableau croisé dynamique (via la commande TRANSFORM). Dans ce cas, on est bien présence d’un tableau dynamiqe car le nombre de colonnes généré est dynamique en fonction des enregistrements du jeu de résultat.

Pour SQL Server, depuis sa version 2005, on a la syntaxe PIVOT qui permet de créer un tableau croisé à partir d’une table, en revanche pour ce qui est du dynamique, c’est pas encore ça.

En effet, il faut préciser les valeurs que prendront les colonnes, illustration :

On a une table cde_entete

3 champs-propriété : cde_liv_civilite, cde_status, cde_mode_liv

un champs numérique : cde_mnt_ht (celui qui aura l’agregat)

On veut un tableau croisé avec les données de la colonne « Mode livraison » (cde_mode_liv) en colonne :

SELECT
cde_liv_civilite,
cde_status,
SUM([1]) AS "avion",
SUM([2]) AS "train"
FROM  cde_entete
PIVOT ( SUM(cde_mnt_ht)
        FOR cde_mode_liv IN ([1], [2])
      ) AS xxx
GROUP BY cde_liv_civilite, cde_status

Pour comprendre, il faut prendre la syntaxe ci-dessus comme un SELECT traditionnel où xxx transforme la table cde_entete avec les valeurs du champ cde_mode_liv en tant que colonne.

Le blème, c’est que ces valeurs doivent être explicitement définies « IN ([1], [2])« , et c’est là qu’on perds l’aspect dynamique.

En revanche, là où ça peut être interressant c’est quand veut un resultset d’indicateurs très variés pour lesquels il nécessiterait d’effectuer de multiple jointures.
L’astuce résiderait à créer un resultset par une série de requêtes UNION dont 2 colonnes pivoteraient au final.

1 – Obtention d’indicateurs et de dimensions depuis plusieurs sourcing

        --1ere sourcing
        select
            year(dt_record) as ANNEE,
            'EMPLOYE' as DIMENSION,
            count(cd_employee) as VALEUR
            from RESOURCES group by year(dt_record)

    UNION
        --2ème sourcing
        select
            year(dt_planning) as ANNEE,
            'BUDGET' as DIMENSION,
            sum (AMOUNT) as VALEUR
            from BUD group by year(dt_planning)

    UNION
        --3ème sourcing
        select
            year(dt_sale) as ANNEE,
            'CA' as DIMENSION,
            sum (SALES) as VALEUR
            from PRODUCTS group by year(dt_sale)

2 – Le résultat de l’UNION sans le PIVOT :

ANNEE       DIMENSION VALEUR
----------- --------- -----------
2006        BUDGET    50000
2007        BUDGET    55000
2008        BUDGET    60000
2005        CA        100000
2006        CA        110000
2007        CA        55
2007        CA        66
2007        CA        120000
2005        EMPLOYE   80
2006        EMPLOYE   86
2007        EMPLOYE   90
2008        EMPLOYE   91

3 – En passant le PIVOT comme ceci…

SELECT
ANNEE,
SUM([EMPLOYE]) AS "Nbr Employés",
SUM([BUDGET]) AS "Budget planifié",
SUM([CA]) AS "Chiffre d'affaire"
FROM (

        --1ere sourcing
        select
            year(dt_record) as ANNEE,
            'EMPLOYE' as DIMENSION,
            count(cd_employee) as VALEUR
            from RESOURCES group by year(dt_record)

    UNION
        --2ème sourcing
        select
            year(dt_planning) as ANNEE,
            'BUDGET' as DIMENSION,
            sum (AMOUNT) as VALEUR
            from BUD group by year(dt_planning)

    UNION
        --3ème sourcing
        select
            year(dt_sale) as ANNEE,
            'CA' as DIMENSION,
            sum (SALES) as VALEUR
            from PRODUCTS group by year(dt_sale)

) MES_UNIONS
PIVOT ( SUM(VALEUR)
        FOR DIMENSION IN ([EMPLOYE], [BUDGET], [CA])
      ) AS bidon
GROUP BY ANNEE

4 – Résultat final :

ANNEE       Nbr Employés Budget planifié Chiffre d'affaire
----------- ------------ --------------- -----------------
2005        80                           100000
2006        86           50000           110000
2007        90           55000           120121
2008        91           60000

Cette méthode est très utile pour du reporting par exemple, et évite d’avoir recours à de multiples jointure externes.

SQL Server – Le cas du Case pour une comparaison

Filed under: Développement — Étiquettes : , — trucmuche92 @ 7:48

En SQL Server, l »utilisation de la syntaxe Case … When … When…else…end est bien utile quand on veut inclure un test dans une requête SELECT :

Exemple :

select nom, prenom, 
case civ 
when 1 then 'Monsieur'
when 2 then 'Madame'
else 'Non mentionné' end as civilite
from employes

Il arrive parfois que le test a effectuer ne s’appuie pas sur une égalité, mais sur une comparaison, la syntaxe est particulière et est la suivante :

select nom, prenom,
case 
        when LastActivityDate < '2008-01-01' then 'Très Longtemps'
        when LastActivityDate < '2008-07-01' then 'Longtemps'
        else 'Récement' end as "Dernère visite"
from aspnet_users

En fait la syntaxe peut paraître différente, mais pas pour tout le monde car les 2 commandes suivantes sont les mêmes et sont valides :

select nom, prenom, case civ 
                    when 1 then 'Monsieur'
                    when 2 then 'Madame'
                    else 'Non mentionné' 
                    end as civilite
from employes

select nom, prenom, case
                    when civ=1 then 'Monsieur' 
                    when civ=2 then 'Madame' 
                    else 'Non mentionné'
                    end as civilite
from employes
Older Posts »

Créez un site Web ou un blog gratuitement sur WordPress.com.