Catégorie: Articles

Oauth / Twitter Auth adaptateur pour le Zend Framework

Par , le samedi 23 avril 2011 15:57

Le travail se poursuit (lentement) sur mon nouveau site web basé sur l'application. Au cours des deux prochaines jours fériés J'espère avoir l'élan nouveau sur le projet (en dépit de la météo merveilleuse à l'heure actuelle). Quoi qu'il en soit, ma prochaine tâche était de créer un adaptateur d'authentification pour le Zend Framework . J'ai eu une mise en œuvre connexion fonctionne, mais avoir une baisse de Auth adaptateur pour le Zend Framework semblait être une proposition intéressante, alors je l'ai créé ....

(Je ne vais pas passer par Oauth ou enregistrement de votre demande avec Twitter, il ya des centaines de guides et de son un processus assez simple de toute façon.)
Continuer 'Oauth / Twitter Auth adaptateur pour le Zend Framework' reading »

»Connectez-vous avec Twitter" en utilisant le Zend Framework

Par , Jeudi 17 Mars 2011 01h07

Malgré toutes les déteste Twitter pour le moment, j'ai décidé de créer un nouveau twitter application basée sur. Etre quelqu'un qui gère plusieurs comptes (personnel et pour mon travail de charité) J'ai été besoin d'un outil pour un certain temps que je suis juste se déplacer à l'écriture (plus de cela dans un futur proche ...).

J'ai lu sur Zend_Oauth_Consumer et comment il peut être utilisé pour obtenir une autorisation pour interagir avec Twitter en utilisant OAuth . Tout va bien, j'ai ma clé d'accès et je peux allègrement après l'écart pour le compte d'un utilisateur. Il ya beaucoup de ressources existent pour ce faire je ne vais pas ennuyer les gens.

L'étape suivante a consisté à permettre aux gens de retourner sur le site, se connecter et de modifier leur compte. C'est là que j'ai atteint un léger problème. Utiliser les exemples de code sur les sites Web signifiait que j'aurais twitter me demander l'autorisation d'accès à nouveau pour chaque connexion, pas bon. Balayage à travers le cadre, je ne pouvais rien voir qui me permettrait de simplement demander une authentification. Cela ne veut pas dire que ce n'est pas là, mais il ne semble pas être un mécanisme d'authentification qui peuvent être invoqués sans connaître le jeton d'accès déjà.

Les alternatives sont à mettre en œuvre un journal basé sur le site ou un moyen de stocker le jeton d'accès de l'utilisateur sur le client (crypté bien sûr). Aucune de ces semblait être une bonne solution / approprié.

Continue reading '"Connectez-vous avec Twitter" en utilisant Zend Framework »

Zend Certified Engineer (ZCE) 5,3

Par , Jeudi 30 Septembre 2010 21h00

Avec la sortie officielle du Zend Certified Engineer (ZCE) programme pour 5,3 j'ai pensé donner mon impression rapide de ce que je pensais de l'examen.

Un peu de fond sur moi: j'ai d'abord été présenté à PHP il ya 7 ans et nous avons travaillé professionnellement dans PHP depuis 2006. Je travaille actuellement pour une excitante start-up appelée Brightpearl basé à Bristol, Royaume-Uni , la production de CRM intégré, la comptabilité, et le logiciel d'ecommerce. Je n'ai pas préalablement obtenu toutes les qualifications ZCE précédente. J'ai actuellement se développer dans la série 5.2.X et n'ont pas vraiment utilisé aucune des fonctionnalités spécifiques à 5,3 (je suis en attente pour le Zend Framework 2 et Doctrine 2) dans mes projets de développement.
Continue reading 'Zend Certified Engineer (ZCE) 5,3' »

Rapide Symfony Démarrer DI (Dependency Injection) Tutoriel

Par , le samedi 14 août 2010 14:21

Quel est Dependency Injection (DI)?

L'injection de dépendance est une technique qui permet pour les objets faiblement couplés au sein d'une application logicielle. Généralement, si un objet nécessite l'accès à la fonctionnalité d'un autre, il serait instancié interne conduisant à des systèmes fortement couplés. En mettant en œuvre l'injection de dépendance que nous injectons les objets requis prêt à l'emploi (parfois aussi appelée inversion de contrôle - CIO). Prenons l'exemple suivant:

  <? Php
 Classe DecisionMaker {
     makeDecision fonction publique (array $ paramètres) {
         / / Besoin de l'adaptateur de bases de données
         $ Dp = new DecisionParameters ();
         $ ParameterScore = $ dp-> getScore ($ paramètres);
         / * ...  Certains logique de décision plus ...  * /
         return ($ parameterScore> 50);
     }
 } 

Ce morceau de code est dit être étroitement couplée à l'objet DecisionParameters. La réécriture du haut d'une manière faiblement couplée, nous aurions quelque chose comme ....

  <? Php
 Classe DecisionMaker {
     private $ _DP;
     public function __construct ($ dp) {
         $ This-> _DP = $ dp;
     }
     makeDecision fonction publique (array $ paramètres) {
         $ ParameterScore = $ this-> _DP-> getScore ($ paramètres);
         / * ...  Certains logique de décision plus ...  * /
         return ($ parameterScore> 50);
     }
 } 

Alors que l'acquisition des avantages du code à couplage lâche, nous ajoutons une telle complexité que chaque fois qu'un objet est instancié nous avons aussi d'instancier ses dépendances et de passer ces trop. Par exemple, ceci:

  $ Choix = DecisionMaker nouvelle ();
 echo $ choix-> makeDecision (array ('efforts' => 'faible', 'retour' => 'haute')); 

devient alors:

  $ Dp = new DecisionParameters ();
 $ Choix = new DecisionMaker ($ dp);
 echo $ choix-> makeDecision (array ('efforts' => 'faible', 'retour' => 'haute')); 

Cette situation devient plus pénible que le nombre de dépendances pour une classe est augmentée, et ce si les dépendances eux-mêmes ont des dépendances? Cela peut très vite devenir un cauchemar administration des objets! Entrez conteneurs injection de dépendance (ou cadres) ...
Continue reading 'rapide Symfony Démarrer DI (Dependency Injection) Tutorial "»

Nue Zend_Layout et Zend_View

Par , mardi 10 août 2010 23:47

Dans cet article, je regarde avec Zend_Layout et Zend_View avec un contrôleur frontal simple pour montrer comment il est possible de commencer à séparer la logique métier et présentation au sein de votre application. Tout le code est disponible sur github:
Zend_Layout nu et Zend_View sur GitHub .

Continuer 'Zend_Layout nu et Zend_View «lire»

Zend Framework par des paramètres du module Mise en page - Suivi

Par , Mardi 16 Février 2010 20h48

Comme suite à mon précédent post sur ​​les réglages par module aménagement basé pour le Zend Framework , j'ai mis à jour le code d'exiger moins de configuration, puis avant (pas besoin de plus que ce que quelques lignes dans votre configuration de l'application!).
Continue reading 'Zend Framework par des paramètres du module Mise en page - Suivi »»

Créer URL personnalisée dans le Zend aide de vue

Par , Jeudi 28 Janvier 2010 23h01

Cela peut sembler simple, mais j'ai été cogner ma tête essayant de créer une URL dans une aide de vue personnalisée dans le Zend Framework . J'ai routage configuration qui obtient le module du sous-domaine en cours d'utilisation donc je ne pouvais pas utiliser une simple URL codées en dur.

Continuer 'URL dans le Zend Créer personnalisé Helper Voir «lecture»

Acheminer les demandes d'sitemap.xml au contrôleur personnalisé / action

Par , Mercredi 6 Janvier 2010 00h13

Afin de demandes directes de / sitemap.xml à un contrôleur de la coutume et l'action dans votre Zend Framework d'application il suffit d'ajouter les éléments suivants dans votre fichier de configuration ou de application.ini alternatives (par exemple, j'utilise navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = indice
 resources.router.routes.sitemap.defaults.action = sitemap

Exemple de code pour la sortie peut être vu par la création d'une action dans le contrôleur approprié (par exemple, mon sitemap réside dans le contrôleur de l'indice, l'action sitemap):

 < php
 Classe IndexController
     étend Zend_Controller_Action
 {
     / **
      * Rend un plan du site basée sur la configuration Zend_Navigation
      * /
     sitemapAction fonction publique ()
     {
    	 echo $ this-> view-> Navigation () -> plan du site ();
    	 $ This-> view-> layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps peut rapidement et facilement être généré en utilisant Zend_Navigation , un bon tutoriel rapide (et généralement très utile pour les tutoriels Zend Framework) est Zend plâtres - créer dynamiquement un menu un sitemap et la chapelure .

Grid Computing Office en utilisant des environnements virtuels - Partie 4

Par , Vendredi 4 Décembre 2009 11:59

Présentation

Je travaille dans une entreprise où nous courons le traitement batch de nombreux millions d'enregistrements de données chaque jour et j'ai pensé récemment à propos de toutes les machines qui sont assis autour de chaque et tous les jours à ne rien faire pendant plusieurs heures. Ce ne serait pas bien si on pouvait utiliser ces machines pour renforcer la puissance de traitement de nos systèmes? Dans cette série d'articles que je vais regarder les avantages potentiels d'employer un bureau de grille en utilisant les environnements virtualisés.

Dans la partie 3 nous avons créé notre machine de traitement virtuel et mettre en place les machines Windows de devenir inactif travailleurs à temps.

Exécution du dernier code

Inévitablement, après la création de votre logique métier travailleurs vont changer, les bugs seront trouvés, le code plus rapide et plus efficace sera produite laissant ainsi vos travailleurs assis autour du traitement des données à l'aide ancien code malodorants . Comment alors pouvons-nous nous assurer que nous sommes toujours en utilisant la dernière version du plus grand et de nos scripts de traitement?

Il ya quelques très facile des moyens simples que nous pouvions faire cela, le truc, cependant, est de réduire la puissance de traitement et le trafic réseau pour y parvenir. Commençons par le plus simple des solutions et il s'améliorer lentement sur une couple d'itérations.

La première méthode serait de tout simplement se connecter à notre serveur de contrôle d'emplois (via Samba, FTP, ou similaire) et tirer vers le bas de la dernière version du code. Pas très efficace, mais il faudra faire le travail. Permet d'améliorer ce peu, que diriez-vous de créer un script rsync et en utilisant à chaque fois que la place? Alternativement ce sujet mettant notre script de traitement plus tard dans la subversion vérifiant le code d'abord et ensuite seulement mettre à jour notre code sur chaque run ( svn update )?

En fin de compte on pourrait se retrouver avec un script bash (appelé par cron toutes les 10 minutes) qui est aussi simple que cela:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php > / dev / null
 puis
     echo "l'emploi est en cours de traitement, la sortie"
 d'autre
     echo "Job ne fonctionne pas, commencer dès maintenant»
     cd / chemin / vers / travailler / copie
     svn update
     php yourJobProcessingScript.php
 fi 

Maintenant, nous pouvons être sûr que, avec chaque exécution, nous sommes définitivement tourner la dernière de code. Nous veillons à ce que cela en mettant à jour notre base de code chaque fois que nous effectuons une course et en réduisant le trafic réseau en transférant uniquement les différences de fichier à travers notre réseau.

Dans ma configuration de démonstration, j'ai fait exactement comme ci-dessus. Subversion a été installé sur mon serveur de traitement d'emplois et j'ai simplement tiré le dernier code à partir d'un «travailleur» en utilisant la branche 'svn update'. J'ai aussi ajouté un tag numéro de version à mon script de traitement qui a été retourné à la base de données dans le cadre du retour des résultats. De cette façon, j'ai pu voir que mon code a été mis à jour chaque fois que j'ai copié ma malle dans la branche des travailleurs à savoir que je n'étais définitivement l'exécution du script de traitement plus tard.

En utilisant les dernières données

Si votre traitement des tâches rend l'utilisation de sources de données, puis à un certain point ceux-ci vont être mis à jour aussi. Sauf si vous appelez de vos sources de données sur une base très rares que vous allez inonder votre réseau avec un trafic dès que vos travailleurs commencer à courir apportant tout à un arrêt. Pour ma solution, j'ai décidé que je voudrais passer mes sources de données avec mes machines virtuelles.

Tenez vous êtes des chevaux là-bas! Que faire si mes sources de données sont ÉNORMES? Eh bien c'est vraiment un cas de combien de données parlons-nous? Il peut être plus rentable d'installer un disque dur plus spacieux supplémentaires dans chaque machine que d'acheter un serveur de traitement supplémentaire. C'est une question de budget et appartient à l'entreprise de décider. Il se peut que vos sources de données sont si grands que c'est juste impossible de garder cette quantité de données dans vos machines travailleur. Dans ce cas, que feriez-vous? Eh bien, nous pourrions envisager d'appeler un serveur de données locales, mais cela pourrait provoquer des problèmes avec le réseau. Dans ce cas, un système de grille comme celle-ci peut devenir réaliste d'inclure dans votre environnement de bureau. Il se peut également que vous pouvez regarder dans les stratégies alternatives course, par exemple seulement appeler vos travailleurs 20 heures-six heures chaque nuit et / ou la limitation de requêtes de données source.

Déplacement sur le disons de nos sources de données s'élèvent à 100 Go de données. Eh bien oui, c'est un peu de données pour déplacer le réseau sur une mise à jour. Comment pourrions-nous nous assurer que nous avons de la dernière copie des données dans ce cas? Rsync est une possibilité, mais personnellement, je pense en exécutant votre source dernières données sur votre serveur de traitement d'emplois et de mettre cela en place comme un maître dans la réplication (avec un journal poubelle à long Nice) pourrait être la voie à suivre:

réplication En fixant chacun de vos travailleurs comme un esclave pour les mises à jour d'emplois du contrôle serveur à vos sources de données sera retombée bien à vos travailleurs sans une énorme augmentation de l'activité du réseau (qui est moins que vous effectuez une mise à jour des données énormes et tous vos travailleurs coup de pied dans à la fois). Cela a des avantages sur rsync en ce que vous aurait pas une longue pause avant chaque emploi; que les mises à jour de bases de données, le mysql démon sur votre travailleur sera constamment mise à jour de ses données tandis que le traitement continue.

C'est ainsi que j'ai créé mon serveur de démonstration. Pour configurer la réplication, j'ai suivi le guide sur le site de MySQL ( Configuration de la réplication ) et dans les 20 minutes, j'ai eu mon agent inital reproduire le contrôle des tâches des serveurs jeu de données. Pour chaque travailleur supplémentaire les paramètres de réplication et de processus de travail chaque fois que la VM a été copié.

Résumé

Dans cette section de l'article, nous avons regardé comment facile et indolore, il est de garder votre code de traitement à jour par rsync using ou subverion (SVN) pour faire le travail et réduire le trafic réseau à la même time. Nous avons également discuté de la façon pour maintenir votre information de source de données mise à jour en lui permettant de couler vers le bas pour chacun de vos travailleurs. Ainsi, nous espace assurer que nous gardons avec la logique métier et de l'information dans notre système de quadrillage de bureau. Il y aura évidemment de multiples alternatives à la réalisation de ces tâches, mais voici deux exemples simples pour montrer avec quelle facilité une solution est à trouver.

Suivant le temps

Dans la dernière partie de cette série, bien nommé la partie 5 , nous allons discuter du déploiement de ce système pour. Je vais résumer ce qui a été appris et ce que j'ai réussi à créer.

Grid Computing Office en utilisant des environnements virtuels - Partie 3

Par , Vendredi 4 Décembre 2009 23:37

Présentation

Je travaille dans une entreprise où nous courons le traitement batch de nombreux millions d'enregistrements de données chaque jour et j'ai pensé récemment à propos de toutes les machines qui sont assis autour de chaque et tous les jours à ne rien faire pendant plusieurs heures. Ce ne serait pas bien si on pouvait utiliser ces machines pour renforcer la puissance de traitement de nos systèmes? Dans cette série d'articles que je vais regarder les avantages potentiels d'employer un bureau de grille en utilisant les environnements virtualisés.

Dans la partie 2 nous avons regardé les emplois d'un serveur sera exécuté, et comment les emplois doivent être configurés afin d'atteindre le plus grand nombre de traitements tout en veillant à ce que chaque tâche est traitée sans échec.

Configuration de votre travail - ou d'un serveur LIMP

La prochaine étape dans le processus est de mettre en place vos travailleurs virtuels. Pour cela, je vais utiliser une installation de CentOS en utilisant VirtualBox. Je vais installer mySQL et PHP sur le serveur, aussi connu comme une boiterie (nux ​​Li, m ySQL, P HP) Servera (j'ai pu faire jusqu'à ce nom).

  • Installer VirtualBox sur votre machine Windows (suivre le lien)
  • Télécharger et installer CentOS (version actuelle 5.3) dans une machine virtuelle créée

Il est inutile de me passe à ce qu'il ya probablement 1000 's de tutoriels grand là-bas (OK, en voici une: Création et Managing CentOS machine virtuelle sous VirtualBox ). Le point important à noter est que je suppose que j'ai appelé ma machine virtuelle GridMachine.

Quant à mon choix du client de virtualisation et de système d'exploitation va il n'ya aucune raison convaincante pour chaque grande choix. VirtualBox est une chose que j'utilise sur mon ordinateur à domicile et est soutenu par les trois principaux systèmes d'exploitation. J'ai choisi CentOS comme un OS stable, bonne, et je l'utilise sur mon propre serveur Web. Je suis un grand croyant dans les bons outils pour le travail (même si je suis d'appliquer «l'utilisation la plus rapide et plus facile pour vous« la mentalité ici), donc si X système d'exploitation exécute votre code rapidement et plus efficacement utiliser à la place:)

Il est important de s'assurer que votre VM utilise le DHCP, sinon pour chaque nouvelle machine virtuelle aurait besoin d'être configurés séparément, ce qui est quelque chose que nous ne want.By utilisant DHCP nous n'avons pas besoin de configurer les paramètres réseau individuellement pour les machines des travailleurs, DHCP main IP pour vous. Par conséquent, vous pouvez copier votre machine virtuelle sur le bureau sans se soucier de la mise en place de chacun (ce qui améliore l'évolutivité et réduit l'administration travailleur).

Le processus que vous devriez viser à atteindre serait d'obtenir une nouvelle machine physique, installez VirtualBox, puis à peu près le déploiement de l'image virtuelle, sans beaucoup d'autre. Il pourrait être sage d'installer tous vos ouvriers sur un sous-réseau différent de sorte que vous pouvez au moins voir combien de machines sont en marche. Vous aurez également besoin de configurer votre machine sur un bail de longue ou illimitée bail DHCP.

Comment exécuter des tâches sur le travailleur

C'est un domaine intéressant et il ya plusieurs méthodes valables pour le traitement des travaux sur le travailleur. Ici, je vais juste parler des deux plus évidentes:

  • Perpétuellement exécution de script: un script, que ce soit un script shell ou un script PHP est exécuté une fois sur le travailleur et s'exécute comme partie d'une boucle infinie. J'ai réduit cette méthode comme un accident du script et potentiellement vos travailleurs cesseront de courir sans une certaine forme d'intervention.
  • L'exécution du script Cron base: toutes les X minutes le daemon cron coup d'envoi d'un appel à votre script pour faire avancer les choses. Sans quelques vérifications cela pourrait conduire à de nombreuses copies de votre exécution de script travailleur.

Ma décision était d'aller avec cron qui débutera un script shell toutes minutes. 10 Mon script shell effectue les tâches suivantes:

  1. Obtenez une liste des processus et grep ce pour 'php'. S'il n'est pas trouvé avant de continuer.
  2. Appelez votre code de travail, dans mon cas ce serait quelque chose en fonction PHP
  3. Un script travailleur remplit sa course
  4. Prêt à partir à nouveau sur le prochain appel appropriée

Mon script bash ressemble à quelque chose comme ce qui suit:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php> / dev / null
 puis
     echo "l'emploi est en cours de traitement, la sortie"
 d'autre
     echo "Job ne fonctionne pas, commencer dès maintenant»
     php yourJobProcessingScript.php
 fi 

Remarque: le fait écho sont presque complètement inutile, mais peut aider la prochaine personne qui vient le long d'essayer de les modifier.

Cela conclut la mise en place de la machine virtuelle travailleur, rapide, simple et facile à copier à chaque nouveau morceau de matériel qui est reçu. Le «intelligence» du système de grille n'est pas vraiment dans le visualisés OS, son tout à voir avec le code créé pour traiter les tâches, la configuration d'emplois, et à faire en sorte que le travail s'exécute, le cas échéant (c'est à dire lorsque l'hôte est inactif ).

Configuration de Windows pour initialiser les travailleurs

La première tâche est de travailler à la commande nécessaire pour faire fonctionner la machine virtuelle à partir de la ligne de commande Windows. Si vous avez installé VirtualBox dans l'emplacement par défaut et que vous avez appelé votre GridMachine travailleur alors la commande nécessaire pour charger votre travailleur est:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Cependant, pour exécuter le script dans un «décapité» l'état, nous devons utiliser:

  "C: \ Program Files \ Sun \ VirtualBox \ VBoxHeadless.exe» startvm GridMachine - PRPPH = off 

Cela va démarrer la machine virtuelle sans l'interface graphique et lui permettre d'enregistrer l'état de grâce. Le second argument s'éteint RDP afin qu'il n'entre pas en conflit avec Windows RDP, ou vous donner un message à l'écoute sur le port 3389. Le nom de la machine virtuelle est sensible à la casse!

Ensuite, nous aurons besoin de mettre en place des fenêtres pour lancer notre VM travailleur une fois la machine a été ralenti. Pour ce faire (sous Windows XP), vous aurez besoin d'aller sur Démarrer -> Tous les programmes -> Accessoires -> Outils système -> Tâches planifiées comme suit:

les tâches planifiées

Ensuite cliquez sur "Ajouter une tâche planifiée" suivie sur Parcourir pour ajouter un programme personnalisé. Accédez à votre script VBoxManage et cliquez sur OK. Programmez votre tâche pour l'une des options (nous allons changer cela en une minute) et continuer. Après sauter l'écran suivant Windows vous demandera qui vous voulez exécuter cette tâche, je vous suggère soit «Administrator» ou la création d'un nouvel utilisateur privilégié. N'oubliez pas que nous ne voulons pas interférer avec le compte personnel du standard sur la machine à tout moment. Cliquez sur Suivant et cochez la case Afficher les options avancées de cette tâche.

Pour la fin de la zone de texte exécuté ajoutez notre chaîne 'startvm GridMachine »et s'assurer que courir que lorsque vous êtes connecté est laissé décochées. Visitez la tâche prochain horaire et le changement du calendrier déroulant de l'option "en cas d'inactivité", choisissez la quantité de temps vous souhaitez que la machine soit inactif avant de passer à l'onglet suivant.

Enfin décocher l'option qui stipule arrêter la tâche si elle a été exécutée montant X de temps, mais ne cochez l'option pour arrêter la tâche si la machine n'est plus ralenti.

calendrier

Ça y est alors pour la configuration d'hôte fenêtres!

Résumé

Dans cette partie, nous avons mis en place une machine virtuelle à agir en tant que travailleur, ainsi que la manière dont nous appeler et d'exécuter des scripts de traitement de notre travail (pour moi-même un script PHP). De là, nous regardons comment mettre en place nos copies de Windows pour démarrer la machine virtuelle en mode headless lorsque l'ordinateur est inactif, et enregistrer son état lorsque l'utilisateur reprend l'usage de la machine. Espérons à ce point que vous voyez combien il est simple à mettre en place un tel système et sont impatient de faire quelques expériences vous allez!

Suivant le temps

Dans la partie 4 , nous allons chercher à utiliser les outils pour s'assurer que vous utilisez la dernière version des sources de code et de données afin que les résultats obtenus sont toujours à jour avec les dernières informations d'affaires et de logique.













Thème Panorama par Themocracy

2 visiteurs en ligne aujourd'hui
1 invités, 1 bots, 0 membres
Max visiteurs aujourd'hui: 17 à 04:02 UTC
Ce mois-ci: 19 à 06h09 UTC 19-08-2011
Cette année: 130 à 28-03-2011 22:40 UTC
Tout le temps: 130 à 28-03-2011 22:40 UTC