text:
<?xml version="1.0" encoding="UTF-8"?>

	<Titre>La démarche de GPEC : anticiper les évolutions et piloter son dispositif RH</Titre>
	<Auteurs>
		<Auteur ID="tabonefrancoise-00653">
			<Nom>TABONE</Nom>
			<Prenom>Françoise</Prenom>
			<Biographie>A exercé plus de 20 ans dans le secteur de la formation (OPCA et réseau des IAE) et au sein de différentes Directions des ressources humaines d'un grand groupe d'assurance. Aujourd'hui, offre des  prestations de conseil et d'accompagnement Ressources Humaines, en veillant à transférer les savoir-faire par des actions de formation adaptées, notamment dans le cadre de démarches GPEC orientées logique de compétence.</Biographie>
		</Auteur>
	</Auteurs>
	<Niveau1>
		<Titre>La démarche de GPEC : anticiper les évolutions et piloter son dispositif RH</Titre>
		<Niveau2>
			<Titre>Pour quoi ? Problématique et enjeux</Titre>

La gestion prévisionnelle des emplois et des compétences (GPEC) consiste à adapter les ressources humaines, en quantité et en qualité, aux besoins prévisibles de l'entreprise à moyen terme.

La démarche GPEC apporte également une réponse méthodique et structurée dans le temps aux attentes des différentes parties prenantes des entreprises :

			<Liste Type="tiret">
				<Item>

L'environnement dans lequel les entreprises évoluent est fluctuant et instable. Les dirigeants ont besoin pour asseoir leurs décisions de visibilité technologique, démographique et économique sur les métiers et les compétences.

				</Item>
				<Item>

Les services ressources humaines démontrent une nouvelle valeur ajoutée en se positionnant comme « Business Partner » de la Direction. Ils doivent être en mesure de proposer et de mettre en œuvre un plan d'actions RH opérationnel (formation, recrutement…) répondant à ce qu'implique la déclinaison de la stratégie de l'entreprise sous l'angle des ressources humaines. Ils doivent aussi entrer dans une logique de dialogue social constructif.

				</Item>
				<Item>

Le monde du travail est instable et complexe : employabilité, fusion, délocalisation, attentes sociales… Les collaborateurs attendent des éclairages concrets sur les « effets » des orientations stratégiques et une visibilité sur les choix de carrière (ou pas) qui s'offrent à eux. Ils attendent aussi une gestion des ressources humaines qui prenne en compte les attentes des différentes générations amenées à travailler ensemble.

				</Item>
				<Item>

Les managers de proximité sont confrontés à la gestion des équipes et la « pression des résultats ». Ils doivent être en mesure de donner du sens aux décisions et aux actions entreprises.

				</Item>
				<Item>

Les représentants du personnel veulent jouer leur rôle au sein des institutions représentatives du personnel, et notamment à travers l'obligation de négociation d'un accord de GPEC quand elle leur incombe.

				</Item>
			</Liste>
		</Niveau2>
	</Niveau1>
	<Niveau1>
		<Titre>Pourquoi ? Les objectifs</Titre>

Il peut s'agir de satisfaire à une obligation légale ; il peut, de manière plus constructive, s'agir de prévoir les besoins humains à terme, aux plans quantitatif et qualitatif, pour s'y préparer.

		<Niveau2>
			<Titre>Répondre à une obligation légale</Titre>

Lorsque l'effectif est supérieur à 300 salariés, la législation fait obligation à l'entreprise de négocier, tous les trois ans, un accord de gestion prévisionnelle des emplois et des compétences (GPEC) qui s'impose à elle.

La loi prévoit, dans son article L.320-2, que cette négociation porte sur :

			<Liste Type="tiret">
				<Item>

les modalités d'information et de consultation du CE sur la stratégie de l'entreprise et ses effets prévisibles sur l'emploi ainsi que sur les salaires ;

				</Item>
				<Item>

la mise en place d'un dispositif de gestion prévisionnelle des emplois et des compétences ;

				</Item>
				<Item>

ainsi que sur les mesures d'accompagnement associées en particulier en matière de formation, VAE (validation des acquis de l'expérience), bilan de compétences, ainsi que l'accompagnement de la mobilité professionnelle et géographique des salariés.

				</Item>
			</Liste>

				<Bold>À noter</Bold> : Cette obligation impose de négocier loyalement, mais n'exige pas la conclusion d'un accord.

Il peut être judicieux, dans le cadre d'un accroissement prévisible de l'effectif de l'entreprise la faisant passer à court terme au-delà de 300 personnes, d'anticiper l'obligation de négocier, pour disposer de temps et « faire ses armes » sur ce sujet.

Dans la réalité, si le seul objectif est de satisfaire aux obligations légales, il y a peu de chances pour que la démarche de GPEC apporte réellement une valeur ajoutée à l'entreprise et à ses collaborateurs. Cette démarche, véritable course d'endurance, nécessite d'être soutenue par une réelle volonté politique.

			<Encadre>

					<Bold>Nota</Bold> : en l'absence de mise en œuvre d'une démarche compétences, il est illusoire de vouloir entrer dans une démarche GPEC.

			</Encadre>

Les outils de base que sont les référentiels de compétences, les évaluations des niveaux de maîtrise des compétences des collaborateurs et les profils individuels de compétences, rendront très aléatoires les diagnostics portés sur la situation actuelle et sur l'état du patrimoine « compétences » de l'entreprise.

		</Niveau2>
		<Niveau2>
			<Titre>Anticiper, pour mieux y répondre, les besoins en compétences de l'entreprise</Titre>

Mener une démarche GPEC peut, indépendamment de toute obligation légale, résulter d'une décision d'entreprise.

L'objectif premier est alors d'adopter une démarche d'anticipation et de traiter en amont les adaptations aux évolutions de l'emploi. C'est un outil au service d'un pilotage RH basé sur une anticipation des évolutions d'effectifs et des besoins en compétences de l'entreprise à trois ou cinq ans.

C'est à partir de la démarche « compétences » que se jouera la qualité de la <Abrev IDRefAbrev="gpec-00229">GPEC</Abrev> (voir <OfmRefExt NumInterne="1.2" RefExterne="FOQ-O-VIII-44-01">« La démarche compétences »</OfmRefExt>). Avec une limite cependant : si on peut tenter de « prévoir » l'avenir (l'évolution des métiers, des processus au regard de l'évolution de l'environnement et de la stratégie de l'entreprise, et par voie de conséquence les besoins en capital humain), aucune méthode ne garantit l'exactitude de la prévision. Il faut donc faire preuve de souplesse et d'adaptabilité.

			<Encadre>
				<Titre>Une communication à privilégier</Titre>

Les démarches de GPEC n'ont pas toujours bonne presse auprès des représentants du personnel. Ils peuvent exprimer un avis réservé, voire de la défiance sur le sujet, dès lors que le projet de négociation ou de co-construction s'ouvre.

Et pour cause !! Certains outils de la GPEC sont les mêmes que ceux repris dans le cadre d'un Plan de sauvegarde de l'emploi, même si les objectifs poursuivis ne sont pas les mêmes : le premier porte sur les ajustements en amont d'effectifs et de compétences, quand le second vise à résoudre un contexte conjoncturel qui n'a pas été anticipé.

La communication interne et la qualité du dialogue social feront la différence !

			</Encadre>
		</Niveau2>
	</Niveau1>
	<Niveau1>
		<Titre>Comment ? Le process d'élaboration d'une GPEC</Titre>

Qu'elle s'inscrive dans le cadre d'une obligation légale de négocier ou d'une approche portée par la direction, la démarche GPEC doit être partagée par l'ensemble des salariés, notamment à travers leurs représentants du personnel.

Porter une GPEC, c'est chercher à anticiper les conséquences sur l'emploi des évolutions prévues pour l'entreprise (phase amont), se doter d'une démarche et de plans d'action de nature à prévenir les effets négatifs de ces évolutions sur l'emploi des collaborateurs et, bien évidemment, les mettre en œuvre et en contrôler les effets <AppelFig>
				<TxtAvt>(</TxtAvt>
				<Appel IDRef="fig-VIII-45-01_3-1"/>
				<TxtApr>)</TxtApr>
			</AppelFig>.

			<Image file="VIII-45-01_3-1.png"/>
			<Titre>Démarche GPEC</Titre>

	</Niveau1>
	<Niveau1>
		<Titre>Une phase amont de construction de la démarche</Titre>

Trois temps marquent le processus amont de la démarche GPEC <AppelFig>
				<TxtAvt>(</TxtAvt>
				<Appel IDRef="fig-VIII-45-01_3-2"/>
				<TxtApr>)</TxtApr>
			</AppelFig>.

			<Image file="VIII-45-01_3-2.png"/>
			<Titre>Phase amont du processus GPEC</Titre>

Il s'agit :

		<Liste Type="tiret">
			<Item>

					<Bold>de décrire les divers avenirs possibles</Bold> de l'entreprise, les analyser en vue de cerner leur impact sur les métiers et les compétences et d'éclairer les besoins de l'entreprise en capital humain, quantitatif et qualitatif, à trois ou cinq ans ;

			</Item>
			<Item>

					<Bold>de dresser un état des lieux</Bold> quantitatif et qualitatif des métiers (activités et charges) et des compétences clés actuellement détenues (nature, nombre et niveaux de maîtrise).

			</Item>
		</Liste>

			<Bold>Après s'être accordé sur ce que sera la démarche GPEC</Bold> (intérêt pour l'entreprise et pour les collaborateurs, partage et échanges autour des informations recueillies en phase amont, cadrage du plan d'actions), le travail consistera à :

		<Liste Type="tiret">
			<Item>

construire une démarche GPEC de nature à résorber les écarts entre besoins et existant :

				<Liste Type="tiret">
					<Item>

quels sont les écarts à résoudre : départ de compétences clés, nouvelles compétences à acquérir, niveaux de maîtrise des compétences à accroître, compétences devenant sans objet…

					</Item>
					<Item>

quels moyens utiliser pour y parvenir : fidélisation, qualification, mobilité interne, promotion, recrutement à l'extérieur de compétences nouvelles…

					</Item>
					<Item>

quels objectifs de résultats recherche-t-on (par exemple : réduire le turn-over de telle population sensible à x %, transférer telle compétence clé à tant de personnes sous tel délai)…

					</Item>
					<Item>

définir l'instance de pilotage de ce projet ;

					</Item>
				</Liste>
			</Item>
			<Item>

préciser la démarche de communication qui sera adoptée en identifiant les acteurs et instances qu'elle visera ?

			</Item>
		</Liste>
		<Niveau2>
			<Titre>Une phase de réalisation/ajustement</Titre>

La cible définie, reste à savoir comment l'atteindre et… contrôler qu'elle est bien atteinte ou, si ce n'est pas le cas, à revisiter le plan d'actions pour opérer les ajustements nécessaires.

Cinq temps peuvent être distingués lors de cette phase <AppelFig>
					<TxtAvt>(</TxtAvt>
					<Appel IDRef="fig-VIII-45-01_3-3"/>
					<TxtApr>)</TxtApr>
				</AppelFig>.

				<Image file="VIII-45-01_3-3.png"/>
				<Titre>Mise en œuvre et phase aval du processus GPEC</Titre>

Pour être fructueux, le projet GPEC doit s'appuyer sur une forte implication des acteurs (Voir <OfmRefInt NumInterne="2.1">« Répondre à une obligation légale »</OfmRefInt>).

Une fois identifiés les écarts entre la structure d'emploi actuelle et celle définie à moyen terme pour répondre à la stratégie de l'entreprise, il sera nécessaire de choisir les moyens à mettre en œuvre pour réduire ces écarts : formation, recrutement, mobilité interne, promotion, modifications de l'organisation…

La mise en œuvre des plans d'actions repose essentiellement sur les managers et leurs collaborateurs, ainsi que sur les spécialistes RH de l'entreprise.

Il en va de même du suivi des réalisations et de l'évaluation des résultats. Si des aspects techniques, comme le système d'informations RH, l'observation de la démographie de l'entreprise, le suivi des statistiques globales sont l'affaire des RH, le pilotage du projet dépasse largement le cadre des RH. La constitution d'un comité de pilotage de la démarche GPEC est une mesure vivement conseillée (Voir paragraphe « <OfmRefInt NumInterne="5">Par Qui</OfmRefInt> ? »).

Plus que pour tout autre processus, l'évaluation fait partie intégrante du processus : un suivi régulier doit être mis en place tout au long du processus car les ajustements nécessaires au vu des résultats obtenus s'imposent sans attendre que le processus soit totalement achevé : il serait trop tard !

En cas de prévision de non-atteinte des objectifs fixés, reprendre le plan d'action pour tenter d'y remédier ramènera au troisième temps de la démarche. Celle-ci se fera en tenant compte des leçons de l'expérience.

		</Niveau2>
	</Niveau1>
	<Niveau1>
		<Titre>Quoi ?</Titre>
		<Niveau2>
			<Titre>Première étape : partir de la stratégie
et identifier les besoins en compétences</Titre>

Il s'agit de poser les fondamentaux de la démarche : sans une réflexion approfondie, il sera difficile ensuite de définir les actions à mener. Cette étape est primordiale et permettra de donner le sens des actions à entreprendre.

			<Niveau3>
				<Titre>Les toutes premières questions à se poser</Titre>
				<Liste Type="tiret">
					<Item>

« Qui porte le projet GPEC ? » Le service Ressources humaines ou la direction ? Cette démarche doit faire le lien entre les objectifs stratégiques et les compétences à anticiper. La situation idéale est donc que la direction et le service Ressources humaines soient « partenaires » et se répartissent les rôles et les différentes missions. Sans oublier de laisser une place aux partenaires sociaux.

					</Item>
					<Item>

« Quel calendrier ? » Le bon sens doit guider la décision. Inutile, voire inefficace de se précipiter. Il faut se donner le temps de réfléchir, de construire, d'ajuster. Il ne faut pas oublier qu'il est difficile de faire évoluer les mentalités. Le bon planning est celui qui est adapté au rythme de l'entreprise, de sa production, et de sa capacité à co-construire.

					</Item>
					<Item>

« Quelle méthodologie appliquer ? » La gestion de projet apporte un cadre de travail structuré qui peut tout à fait convenir à la démarche de mise en œuvre d'une GPEC.

					</Item>
				</Liste>
			</Niveau3>
			<Niveau3>
				<Titre>Expliciter la stratégie et s'accorder sur les objectifs opérationnels qui en découlent</Titre>

Il convient que les parties prenantes, pilotes de la démarche, s'approprient les options stratégiques, échangent sur les enjeux, pour que les actions de GPEC aient du sens pour eux.

Quelques questions au sujet des enjeux :

				<Liste Type="tiret">
					<Item>

Quels sont les enjeux économiques concernant le marché, le développement, le système de production, la concurrence, les clés de succès…

					</Item>
					<Item>

Quels sont les enjeux sociaux : quelles compétences disponibles immédiatement, métiers à développer, politique managériale, nature des relations avec les représentants du personnel, difficultés aujourd'hui à résoudre…

					</Item>
					<Item>

Quels sont les enjeux concernant les conditions de travail : les outils et leur technologie, l'organisation, la polyvalence, les risques psychosociaux éventuellement encourus…

					</Item>
				</Liste>

Ces enjeux définis, il conviendra d'identifier les processus clés et les besoins de compétences en résultant.

La démarche peut être illustrée par un cas concret <AppelTab>
						<TxtAvt>(</TxtAvt>
						<Appel IDRef="tab-VIII-45-01_4-1"/>
						<TxtApr>)</TxtApr>
					</AppelTab>

				<Tableau IDTab="tab-VIII-45-01_4-1">

						<title>Réflexion amont</title>
						<Source>

(Illustration tirée d'un cas concret dans le secteur de l'assurance)

						</Source>
						<tgroup cols="4">
							<colspec colname="col1" colnum="1" colwidth="25*"/>
							<colspec colname="col2" colnum="2" colwidth="25*"/>
							<colspec colname="col3" colnum="3" colwidth="25*"/>
							<colspec colname="col4" colnum="4" colwidth="25*"/>

								<row valign="middle">
									<entry>

											<Bold>Enjeu</Bold>

									</entry>
									<entry>

											<Bold>Stratégie commerciale</Bold>

									</entry>
									<entry>

											<Bold>Processus clés</Bold>

									</entry>
									<entry>

											<Bold>Impact sur les compétences</Bold>

									</entry>
								</row>

								<row valign="middle">
									<entry morerows="5" rowsep="1">

Maintenir son positionnement sur un marché tendu et en décroissance

									</entry>
									<entry morerows="1" rowsep="1">

Améliorer la proactivité

									</entry>
									<entry>

Connaître et comprendre les situations des clients

									</entry>
									<entry>

Connaître le marché et anticiper les évolutions

									</entry>
								</row>
								<row valign="middle">
									<entry>

Construire une offre couvrant tous les besoins en assurance des clients et prospects

									</entry>
									<entry>

Développer la compétence technique produit

									</entry>
								</row>
								<row valign="middle">
									<entry morerows="3" rowsep="1">

Améliorer la qualité de service au regard des besoins et attentes des clients

									</entry>
									<entry morerows="1" rowsep="1">

Développer une « relation d'intimité », au sens marketing du terme, avec le client

									</entry>
									<entry>

Développer l'écoute clients/ l'analyse des besoins et attentes / recueil du feed-back client

									</entry>
								</row>
								<row valign="middle">
									<entry>

Maîtriser la conduite de l'entretien

									</entry>
								</row>
								<row valign="middle">
									<entry morerows="1" rowsep="1">

Construire les packages les plus performants tant pour le client que pour l'entreprise

									</entry>
									<entry>

Développer la capacité d'analyse, et l'intelligence situationnelle

									</entry>
								</row>
								<row valign="middle">
									<entry>

Être capable d'élaborer une réponse « technique » sur mesure

									</entry>
								</row>

						</tgroup>

				</Tableau>
				<Encadre>
					<Titre>L'implication des salariés : un levier essentiel !</Titre>

Les salariés devront être informés des objectifs de la démarche GPEC et des moyens mis à leur disposition pour construire et bâtir leur projet professionnel.

Cette information prendra la voie hiérarchique, et/ou pourra être relayée par les représentants du personnel. Le dialogue social prend ici toute sa dimension. D'autant plus s'il s'agit de négocier un accord.

				</Encadre>
			</Niveau3>
		</Niveau2>
		<Niveau2>
			<Titre>Deuxième étape : le diagnostic des ressources actuelles</Titre>

Les objectifs fixés, la feuille de route ne pourra être tracée sans une vision claire de la situation de départ.

Cette démarche doit se faire au plus près de l'activité, au niveau des unités de travail.

			<Niveau3>
				<Titre>Engager une réflexion globale par unité de travail</Titre>

Au sein d'une unité de travail, il s'agira de s'attacher à dresser un bilan autour des métiers, emplois et compétences, d'une part, des pratiques RH et conditions de travail de l'autre.

				<Niveau4>
					<Titre>Métier, emploi et compétence</Titre>
					<Liste Type="tiret">
						<Item>

Les métiers et leurs évolutions : la technologie, les processus (le traitement de l'information, par exemple, est souvent concerné), de nouvelles probables contraintes économiques ou réglementaires, des évolutions des attentes clients

						</Item>
						<Item>

Les compétences mobilisées dans chaque environnement (voir <OfmRefExt NumInterne="3.3" RefExterne="FOQ-O-VIII-44-04">« Du référentiel des compétences à la gestion des compétences »</OfmRefExt>)

						</Item>
						<Item>

Les compétences détenues et celles faisant défaut actuellement au regard des prévisions d'évolution.

						</Item>
					</Liste>
				</Niveau4>
				<Niveau4>
					<Titre>Pratiques de GRH et conditions d'emploi</Titre>
					<Liste Type="tiret">
						<Item>

Les recrutements, les modalités d'intégration

						</Item>
						<Item>

Les types de contrats de travail, les durées du travail, les formations initiales

						</Item>
						<Item>

Les effectifs par statuts, sexe…

						</Item>
						<Item>

Les rémunérations

						</Item>
						<Item>

Les pratiques de formation

						</Item>
						<Item>

Le système de mobilité et de promotion

						</Item>
						<Item>

La pyramide des âges, des anciennetés

						</Item>
					</Liste>
				</Niveau4>
			</Niveau3>
			<Niveau3>
				<Titre>Synthétiser les résultats obtenus au sein des différentes unités de travail</Titre>

Ce travail de « compilation » fournira deux « photographies » : un état des lieux à un instant « t » et une hypothèse sur l'état souhaitable à horizon de trois ou cinq ans, selon l'horizon retenu pour le plan de GPEC.

Il conviendra de le compléter d'une projection de l'état au temps « t » au temps « t + 1 », compte tenu des évolutions naturelles que connaîtra l'état au temps « t » (le « film », toutes choses égales par ailleurs, c'est-à-dire sans pilotage par la GPEC). Des études statistiques y pourvoiront.

			</Niveau3>
			<Niveau3>
				<Titre>Réaliser les études statistiques renseignant sur les évolutions « naturelles »</Titre>

Entrent dans ce cadre :

				<Liste Type="tiret">
					<Item>

L'établissement de la pyramide des âges qui renseigne sur l'évolution dans le temps et permet de cerner l'impact des départs à la retraite prévisibles : la gestion des seniors représente un enjeu important (Quelles mesures pour maintenir leur implication jusqu'à leur départ ? Quelles actions pour que leur départ ne s'accompagne pas d'une perte de compétences clés pour l'entreprise ?).

					</Item>
					<Item>

Elle fournit aussi de précieuses indications sur les réelles possibilités de pratique de la promotion hiérarchique interne : une pyramide en « pelote de laine » permet une progression rapide dans l'entreprise quand celle « en toupie » laisse peu d'opportunités <AppelFig>
								<TxtAvt>(</TxtAvt>
								<Appel IDRef="fig-VIII-45-01_4-1"/>
								<TxtApr>)</TxtApr>
							</AppelFig>.

					</Item>
					<Item>

L'analyse des flux d'entrées et sorties, en détaillant la source de ces mouvements : recrutements, turn-over, départs à la retraite.

					</Item>
					<Item>

La pyramide des anciennetés et son évolution, compte tenu de la tendance constatée en matière de flux : les enjeux sont importants à la fois en termes de maintien des compétences, de coût de formation et de rémunération (effet de Noria : taux de variation de la masse salariale causé par la variation de l'ancienneté des salariés résultant à la fois de leur vieillissement et du remplacement des plus âgés par le recrutement de salariés plus jeunes).

					</Item>
				</Liste>

					<Image file="VIII-45-01_4-1.png"/>
					<Titre>Exemples de pyramide des âges</Titre>

				<Encadre>
					<Titre>Les informations déjà à disposition</Titre>

Une démarche GPEC est longue et fastidieuse. Il faut se ménager.

De nombreuses informations sont déjà à disposition : bilan social, rapport de situation comparée Hommes/Femmes, entretiens (annuels, de carrière…), orientations stratégiques, rapports des CE, DP et CHSCT…

À ces informations internes, peuvent s'ajouter des informations externes à disposition (syndicats professionnels, chambres consulaires observatoires locaux de l'emploi, OPCA…)

À utiliser sans modération !!

				</Encadre>
			</Niveau3>
		</Niveau2>
		<Niveau2>
			<Titre>Troisième étape : construire la démarche GPEC</Titre>

Les écarts, actuels et prévisibles, identifiés, il s'agit à ce stade de faire des choix, d'établir des priorités en prenant en compte tout à la fois le risque potentiel, le degré d'urgence, les coûts… et déterminer la nature des actions qui seront retenues pour y remédier.

S'il revient à chaque unité de travail, de déterminer les risques majeurs pour elle, d'établir les priorités et d'indiquer les leviers d'actions à sa disposition, c'est la vision synthétique de ces éléments, au niveau global de l'entreprise, qui permettra de déterminer les actions correctives qui semblent les mieux adaptées (voir <OfmRefExt NumInterne="3" RefExterne="FOQ-O-VIII-40-02">« Architecture GRH »</OfmRefExt>).

Pour chaque écart constaté, il s'agira de déterminer le processus RH à retenir : recrutement externe, formation, mobilité interne… Pour opérer ce choix, établir la « feuille de route », il convient de considérer à la fois l'efficacité des processus RH (quel est le processus le mieux à même d'y remédier dans les délais impartis : recrutement, formation, mobilité interne, promotion ?) et la politique RH de l'entreprise.

		</Niveau2>
		<Niveau2>
			<Titre>Quatrième étape : élaborer le plan d'action</Titre>

Une fois ces choix arrêtés, restera encore à « trouver » les moyens de répondre aux objectifs dans le cadre des ressources disponibles pour mener les actions (au plan humain comme au plan matériel) et des coûts supportables par l'entreprise. La démarche GPEC trouvera alors son expression opérationnelle sous forme de plan d'actions.

En ce qui concerne la méthode à suivre, il n'existe pas d'outils « prêts à l'emploi » pour cela : c'est l'équipe pilote qui s'en charge ! Tout en veillant à rester très en phase avec la culture d'entreprise.

			<Encadre>
				<Titre>Les limites de la GPEC</Titre>

La GPEC n'a rien d'une recette magique.

Il se peut qu'elle ne puisse pas résorber certains écarts entre besoins à terme et ressources, actuelles ou potentielles ; à titre d'exemple :

				<Liste Type="tiret">
					<Item>

les compétences recherchées ne sont pas en nombre suffisant tant en interne qu'en externe ;

					</Item>
					<Item>

le temps imparti est insuffisant pour que les personnes qui pourraient être pressenties puissent acquérir les compétences voulues ;

					</Item>
					<Item>

le budget à disposition n'est pas suffisant, etc.

					</Item>
				</Liste>

En ce cas, c'est probablement vers l'organisation qu'il faudra se tourner pour la rendre « biocompatible ».

Il se peut aussi que les problèmes rencontrés ne soient pas du ressort de la GPEC, mais plus de celui du management. À titre d'exemple, vouloir améliorer l'accueil client peut être plus affaire de management (les clients sont souvent traités par les employés à l'image de la manière dont les managers les traitent) beaucoup plus que de compétence comportementale. En ce cas, toutes les formations, d'aussi grande qualité soient-elles, ne viendront pas à bout d'un accueil défectueux lié à une mauvaise ambiance ou à des conditions de travail maintenant sous stress les employés.

			</Encadre>
		</Niveau2>
		<Niveau2>
			<Titre>Suivre les réalisations, les évolutions et ajuster les plans d'action</Titre>
			<Niveau3>
				<Titre>Suivre les réalisations</Titre>

Une seule règle : priorité au réalisme !

La méthode des petits pas est de loin la plus efficace : mieux vaut quelques actions bien menées qu'un plan inachevé !

Trouver la bonne articulation Temps/Moyens/Objectifs/Communication est capital pour obtenir les résultats attendus. Une démarche GPEC doit s'inscrire dans le temps. Inutile de vouloir précipiter ce projet.

			</Niveau3>
			<Niveau3>
				<Titre>Suivre les évolutions et ajuster les plans d'action</Titre>

La mise en œuvre d'une GPEC s'inscrit dans le temps. Elle aura à s'ajuster aux événements qui impactent l'entreprise au quotidien. Les mesures prises peuvent aussi ne pas porter leurs fruits à hauteur des espérances.

Il est utile de prévoir les modalités d'évaluation et de suivi pour s'assurer de la pertinence, et par voie de conséquence, de la pérennité de la démarche GPEC (Voir <OfmRefExt RefExterne="FOQ-O-VIII-45-02">« Les outils de la GPEC et leur articulation »</OfmRefExt>).

Pour cela, les différentes parties prenantes ont un rôle à jouer, à un timing défini à l'avance (qui peut être annuel, semestriel ou trimestriel, selon le rythme auquel évolue l'entreprise).

				<Liste Type="tiret">
					<Item>

Le service des ressources humaines : doit prévoir <Bold>un système d'évaluation et d'appréciation des actions menées</Bold> et des résultats obtenus (tableau de bord). Ce système d'évaluation portera sur les constats des réalisations et leur niveau d'efficacité en lien avec la feuille de route initiale.

					</Item>
					<Item>

Le service des ressources humaines est le <Bold>garant de la fiabilité du système d'information</Bold>. Bien construire son système (historisation des données, délégation d'enregistrement des informations telles que celles de l'évaluation annuelle, partage des informations…) faciliteront le travail de tous et leur implication.

					</Item>
					<Item>

Les parties prenantes impliquées dans le dispositif (comité de suivi, comité de pilotage, direction, salariés) : <Bold>évaluent les réalisations et définissent les actions correctives</Bold> ou d'ajustement si besoin. Le cas échéant, tous les changements décidés conduiront à rénover le plan d'actions.

					</Item>
					<Item>

Les <Bold>instances représentatives du personnel</Bold> : consultées ou informées annuellement sur le sujet de la GPEC.

					</Item>
				</Liste>

La communication interne (voir parfois externe) favorise la mobilisation indispensable des équipes.

Tous les outils habituels de communication peuvent être coordonnés. Journal d'entreprise, intranet, lettre d'information, affichage, informations lors de réunions générales ou de services, assemblées générales… pourront diffuser une information régulière (compte rendu de réunion, indicateurs de suivis, informations générales…).

			</Niveau3>
		</Niveau2>
	</Niveau1>
	<Niveau1>
		<Titre>Par qui ? Le management de la GPEC</Titre>
		<Niveau2>
			<Titre>Chercher l'implication de tous les acteurs</Titre>
			<Niveau3>
				<Titre>La direction</Titre>

Il appartient à la direction de définir les axes prioritaires, de porter le projet et de donner à l'encadrement les moyens de piloter les actions.

			</Niveau3>
			<Niveau3>
				<Titre>L'encadrement</Titre>

L'encadrement est le « moteur » de cette action au sein de chacune des unités (voir <OfmRefInt NumInterne="4.2">§ 4.2 « Engager une réflexion par unité de travail »</OfmRefInt>) tant au niveau de la réflexion amont que de l'action quotidienne et de l'évaluation.

				<Liste Type="tiret">
					<Item>

Les directions opérationnelles sont les mieux armées pour prévoir les fluctuations et les évolutions de l'activité dans leurs domaines.

					</Item>
					<Item>

Les managers de proximité sont au quotidien ceux qui peuvent avec le plus de succès accompagner l'évolution de leurs collaborateurs.

					</Item>
					<Item>

Managers directs, responsables de niveau n+2 et intéressés disposent des informations les plus fiables en ce qui concerne l'évaluation des compétences, les talents et le potentiel de chaque collaborateur. À charge pour eux de partager leurs informations et perceptions dans un esprit constructif.

					</Item>
				</Liste>
			</Niveau3>
			<Niveau3>
				<Titre>La DRH</Titre>

La maîtrise d'ouvrage revient à la DRH.

Les études statistiques lui incombent naturellement.

La conduite du projet est également de son ressort. La gestion de projet est une méthode sur laquelle les équipes en charge de la GPEC pourront s'appuyer (voir <OfmRefExt RefExterne="FOQ-O-VIII-30-05">« Le fonctionnement en mode projet »</OfmRefExt>). Disposer, au sein des services RH d'une « compétence Projet » devient alors un atout pour la réussite.

Une attention particulière doit être portée au système d'information qui supportera toute la démarche.

			</Niveau3>
			<Niveau3>
				<Titre>Les partenaires sociaux</Titre>

À ce titre, il est intéressant de traiter l'obligation légale de négociation comme une réelle opportunité de dialogue et co-construction. Les partenaires sociaux sont aussi des relais d'information, ascendante notamment, dont l'entreprise aurait tort de se priver.

Mais la réussite de la démarche repose également sur l'adhésion et l'implication de l'ensemble des salariés.

			</Niveau3>
			<Niveau3>
				<Titre>Communiquer, communiquer et communiquer !</Titre>

Communiquer, c'est permettre à tous les acteurs de l'entreprise de s'approprier la démarche, sur tous les sujets de la GPEC, de partager le diagnostic, de co-définir le plan d'actions et donc, de mobiliser les ressources pour le mener à bien.

			</Niveau3>
		</Niveau2>
		<Niveau2>
			<Titre>Avec ou sans l'assistance de spécialistes extérieurs ?</Titre>

Le projet GPEC peut être confié à un organisme extérieur, qui apportera sa méthodologie, et qui garantira la bonne réalisation jusqu'à son terme, de la démarche. Il faut être tenace : entre 30 et 50 % des projets ne se concrétisent pas.

Il existe aussi des aides (notamment pour les entreprises de moins de 300 salariés) qui pourront financer pour partie la démarche de diagnostic. Les organismes paritaires collecteurs agréés (OPCA) et la direction régionale des entreprises, de la concurrence, de la consommation, du travail et de l'emploi (DIRECCTE) sauront vous apporter tous les renseignements.

		</Niveau2>
	</Niveau1>
	<Niveau1>
		<Titre>Au service de l'amélioration continue : l'apprentissage permanent</Titre>

Une démarche de GPEC, c'est un dispositif RH qui pilote le « Qui fait quoi ? Comment ? », à partir d'une prévision de « Combien ? Et Pour faire quoi pour demain ? ».

Autant dire que l'on est en pleine « gestion du chaos ». La GPEC a en charge de faire émerger un nouvel ordre dans une organisation par nature chaotique : ses composantes, internes et externes, s'enchevêtrent et interagissent, rendant toute réalité complexe et aboutissant à des résultats impossibles à anticiper avec certitude.

La démarche rationnelle, planifiée, linéaire de la GPEC s'inscrit dans un contexte où il est de plus en plus difficile d'appliquer efficacement le « planifier-réaliser-contrôler-améliorer » (<Ital>cf.</Ital> roue de Deming ou Plan-Do-Check-Act[PDCA]) et réellement maîtriser sa destinée. La réalisation de l'objectif précis assigné à la GPEC avec une démarche planifiée est illusoire.

Par voie de conséquence, l'amélioration de la démarche suppose de déplacer un tant soit peu la manière d'envisager la GPEC : de ne pas en faire une fin en soi, mais de l'utiliser pour faire de l'organisation une organisation apprenante en matière de gestion des ressources humaines.

Comment ? En associant un maximum d'acteurs à ce projet, en considérant ce projet comme l'occasion de mettre en place et pérenniser des conditions permettant à l'organisation et ses collaborateurs de trouver leur voie, non pas de manière planifiée, mais de manière « adaptative ». Autrement dit, l'amélioration de la GPEC consiste, au travers de son déploiement permanent, à préparer l'organisation et ses collaborateurs, grâce à des habitudes de raisonnement sur les processus RH, à des « répertoires de réponses » tirés d'expérimentations multiples, à ajuster en permanence « besoins et ressources », au gré des événements.

L'amélioration continue de la démarche de GPEC vise à ancrer la GPEC dans l'entreprise pour qu'elle soit celle qui correspond à l'entreprise, à son histoire, à ses collaborateurs : une GPEC inscrite dans son ADN.

	</Niveau1>


text:
/* this file has been autogenerated by vtkNodeJsWrap */
/* editing this might proof futile */

#ifndef NATIVE_EXTENSION_VTK_VTKQUADRATICTRIANGLEWRAP_H
#define NATIVE_EXTENSION_VTK_VTKQUADRATICTRIANGLEWRAP_H

#include <nan.h>

#include <vtkSmartPointer.h>
#include <vtkQuadraticTriangle.h>

#include "vtkNonLinearCellWrap.h"
#include "../../plus/plus.h"

class VtkQuadraticTriangleWrap : public VtkNonLinearCellWrap
{
	public:
		using Nan::ObjectWrap::Wrap;
		static void Init(v8::Local<v8::Object> exports);
		static void InitPtpl();
		static void ConstructorGetter(
			v8::Local<v8::String> property,
			const Nan::PropertyCallbackInfo<v8::Value>& info);

		VtkQuadraticTriangleWrap(vtkSmartPointer<vtkQuadraticTriangle>);
		VtkQuadraticTriangleWrap();
		~VtkQuadraticTriangleWrap( );
		static Nan::Persistent<v8::FunctionTemplate> ptpl;

	private:
		static void New(const Nan::FunctionCallbackInfo<v8::Value>& info);

		static void CellBoundary(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetCellDimension(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetCellType(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetClassName(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetEdge(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetFace(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetNumberOfEdges(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetNumberOfFaces(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetParametricCenter(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void GetParametricDistance(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void InterpolateDerivs(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void InterpolateFunctions(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void InterpolationDerivs(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void InterpolationFunctions(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void IsA(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void NewInstance(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void SafeDownCast(const Nan::FunctionCallbackInfo<v8::Value>& info);
		static void Triangulate(const Nan::FunctionCallbackInfo<v8::Value>& info);

#ifdef VTK_NODE_PLUS_VTKQUADRATICTRIANGLEWRAP_CLASSDEF
		VTK_NODE_PLUS_VTKQUADRATICTRIANGLEWRAP_CLASSDEF
#endif
};

#endif

redpajama_set_name: RedPajamaGithub


text:
import Layer from '../../Layer'

/**
 * SpatialDropout2D layer class
 * Note that this layer is here only for compatibility purposes,
 * as it's only active during training phase.
 */
export default class SpatialDropout2D extends Layer {
  /**
   * Creates an SpatialDropout2D layer
   *
   * @param {Object} [attrs] - layer config attributes
   * @param {number} [attrs.rate] - fraction of the input units to drop (between 0 and 1)
   * @param {string} [attrs.data_format] - channels_first` or `channels_last`
   */
  constructor(attrs = {}) {
    super(attrs)
    this.layerClass = 'SpatialDropout2D'

    const { rate = 0.5, data_format = 'channels_last' } = attrs

    this.description = `${rate}`

    this.rate = Math.min(Math.max(0, rate), 1)
    this.dataFormat = data_format
  }

  /**
   * Method for layer computational logic
   *
   * @param {Tensor} x
   * @returns {Tensor}
   */
  call(x) {
    this.output = x
    return this.output
  }
}


text:
package net.sf.launch4j.form;

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public abstract class SingleInstanceForm extends JPanel
{
   protected final JLabel _splashFileLabel = new JLabel();
   protected final JTextField _mutexNameField = new JTextField();
   protected final JCheckBox _singleInstanceCheck = new JCheckBox();
   protected final JTextField _windowTitleField = new JTextField();
   protected final JLabel _splashFileLabel1 = new JLabel();

   /**
    * Default constructor
    */
   public SingleInstanceForm()
   {
      initializePanel();
   }

   /**
    * Adds fill components to empty cells in the first row and first column of the grid.
    * This ensures that the grid spacing will be the same as shown in the designer.
    * @param cols an array of column indices in the first row where fill components should be added.
    * @param rows an array of row indices in the first column where fill components should be added.
    */
   void addFillComponents( Container panel, int[] cols, int[] rows )
   {
      Dimension filler = new Dimension(10,10);

      boolean filled_cell_11 = false;
      CellConstraints cc = new CellConstraints();
      if ( cols.length > 0 && rows.length > 0 )
      {
         if ( cols[0] == 1 && rows[0] == 1 )
         {
            /** add a rigid area  */
            panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
            filled_cell_11 = true;
         }
      }

      for( int index = 0; index < cols.length; index++ )
      {
         if ( cols[index] == 1 && filled_cell_11 )
         {
            continue;
         }
         panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
      }

      for( int index = 0; index < rows.length; index++ )
      {
         if ( rows[index] == 1 && filled_cell_11 )
         {
            continue;
         }
         panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
      }

   }

   /**
    * Helper method to load an image file from the CLASSPATH
    * @param imageName the package and name of the file to load relative to the CLASSPATH
    * @return an ImageIcon instance with the specified image file
    * @throws IllegalArgumentException if the image resource cannot be loaded.
    */
   public ImageIcon loadImage( String imageName )
   {
      try
      {
         ClassLoader classloader = getClass().getClassLoader();
         java.net.URL url = classloader.getResource( imageName );
         if ( url != null )
         {
            ImageIcon icon = new ImageIcon( url );
            return icon;
         }
      }
      catch( Exception e )
      {
         e.printStackTrace();
      }
      throw new IllegalArgumentException( "Unable to load image: " + imageName );
   }

   public JPanel createPanel()
   {
      JPanel jpanel1 = new JPanel();
      FormLayout formlayout1 = new FormLayout("FILL:7DLU:NONE,RIGHT:MAX(65DLU;DEFAULT):NONE,FILL:3DLU:NONE,FILL:60DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:7DLU:NONE","CENTER:9DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:3DLU:NONE,CENTER:DEFAULT:NONE,CENTER:9DLU:NONE");
      CellConstraints cc = new CellConstraints();
      jpanel1.setLayout(formlayout1);

      _splashFileLabel.setIcon(loadImage("images/asterix.gif"));
      _splashFileLabel.setName("splashFileLabel");
      _splashFileLabel.setText(Messages.getString("mutexName"));
      jpanel1.add(_splashFileLabel,cc.xy(2,4));

      _mutexNameField.setName("mutexNameField");
      _mutexNameField.setToolTipText(Messages.getString("mutexNameTip"));
      jpanel1.add(_mutexNameField,cc.xywh(4,4,2,1));

      _singleInstanceCheck.setActionCommand("Enable splash screen");
      _singleInstanceCheck.setName("singleInstanceCheck");
      _singleInstanceCheck.setText(Messages.getString("enableSingleInstance"));
      jpanel1.add(_singleInstanceCheck,cc.xywh(4,2,2,1));

      _windowTitleField.setName("windowTitleField");
      _windowTitleField.setToolTipText(Messages.getString("windowTitleTip"));
      jpanel1.add(_windowTitleField,cc.xywh(4,6,2,1));

      _splashFileLabel1.setName("splashFileLabel");
      _splashFileLabel1.setText(Messages.getString("windowTitle"));
      jpanel1.add(_splashFileLabel1,cc.xy(2,6));

      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5,6 },new int[]{ 1,2,3,4,5,6,7 });
      return jpanel1;
   }

   /**
    * Initializer
    */
   protected void initializePanel()
   {
      setLayout(new BorderLayout());
      add(createPanel(), BorderLayout.CENTER);
   }

}


text:
<?php
  if(!isset($listblogidbyuser)){
    $listblogidbyuser = [];
  }
?>

<img src="<?php echo base_url();?>assets/img/banner_hero.png">

 Share Your Green Story!

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

<a class="button button-yellow" href="<?php echo site_url('blog/stories');?>">View All Stories<a class="button button-main" <?php echo (isset($userinfo) ? 'onclick="addstory()"' : 'data-open="modal-login"');?>>Share Your Story

            <?php
              if($recentblog != []){ ?>

Recent Stories

              <?php
              }
            ?>

          <?php
          foreach($recentblog as $blog){ ?>

                <div class="photo" onclick="window.location.href= base_url + 'blog/detail/' + <?php echo $blog["blog_id"];?>"><img src="<?php echo base_url();?>upload/blog/<?php echo $blog["blog_id"] . "/" . $blog["coverphoto"];?>">

<img src="<?php echo base_url();?>assets/img/icn_green_attraction_white.png">

<a class="button button-default button-small button-vote <?php echo (in_array($blog["blog_id"], $listblogidbyuser) ? 'active' : '')?>" id="voteblog_<?php echo $blog["blog_id"];?>" onclick="<?php echo (in_array($blog["blog_id"], $listblogidbyuser) ? 'unlikeblog(this)' : 'likeblog(this)')?>" value="<?php echo $blog["blog_id"];?>"><?php echo $blog['amount_like'];?>

<?php echo $blog['amount_view'];?> Views

                  <div class="story-topic" onclick="window.location.href= base_url + 'blog/detail/' + <?php echo $blog["blog_id"];?>">

 <?php echo $blog['title'];?>

place<?php echo $blog['place'];?>, <?php echo $blog['province'];?>

                        <?php
                        for($i=0 ;$i < count($blog["greentagname"]); $i++){
                          if($i == 0) {?>
                             <a class="tag active" href="<?php echo base_url();?>blog/searchandlistblog?tag=<?php echo $blog["tagid"][$i];?>"><?php echo $blog["greentagname"][$i]?>
                            <?php
                            if(count($blog["greentagname"]) > 1){ ?>
                              <a class="tag active" data-toggle="example-dropdown-<?php echo $blog["blog_id"];?>">+ <?php echo count($blog["greentagname"])-1;?> Mores
                              <div class="dropdown-pane top tag-more" id="example-dropdown-<?php echo $blog["blog_id"];?>" data-dropdown data-hover="true" data-hover-pane="true">
                            <?php
                            }?>
                          <?php
                          }
                          else{ ?>
                              <a class="tag active" href="<?php echo base_url();?>/blog/searchandlistblog?tag=<?php echo $blog["tagid"][$i];?>"><?php echo $blog["greentagname"][$i]?>
                          <?php
                          }
                        }
                        if(count($blog["greentagname"]) > 1){
                          echo "
";
                        }
                        ?>

          <?php
          }
          ?>

            <?php
              if($recentblog != []){ ?>

  <a class="button button-yellow" href="<?php echo site_url('blog/stories');?>">View All Stories

              <?php
              }
            ?>

            <?php
            if($topblog != []){?>

Top Vote

            <?php
            }
            ?>

        <?php
        for($i=0 ; $i < count($topblog); $i++){
          if($i == 0){?>

<img src="<?php echo base_url();?>upload/blog/<?php echo $topblog[$i]["blog_id"] . "/" . $topblog[$i]["coverphoto"];?>">

<img src="<?php echo base_url();?>assets/img/icn_green_attraction_white.png">

<a class="button button-default button-small button-vote <?php echo (in_array($topblog[$i]["blog_id"], $listblogidbyuser) ? 'active' : '')?>" id="votetopblog_<?php echo $topblog[$i]["blog_id"];?>" onclick="<?php echo (in_array($topblog[$i]["blog_id"], $listblogidbyuser) ? 'unlikeblog(this)' : 'likeblog(this)')?>" value="<?php echo $topblog[$i]["blog_id"];?>"><?php echo $topblog[$i]["amount_like"]?>

<?php echo $topblog[$i]["amount_view"]?> Views

 <?php echo $topblog[$i]["title"]?>

place<?php echo $topblog[$i]["place"]?>, <?php echo $topblog[$i]["province"]?>

                        <?php
                        for($j=0;$j < count($topblog[$i]["greentagname"]);$j++){ ?>
                          <a class="tag active" href="<?php echo base_url();?>blog/searchandlistblog?tag=<?php echo $topblog[$i]["tagid"][$j];?>"><?php echo $topblog[$i]["greentagname"][$j];?>
                        <?php
                        }
                        ?>

                        <?php
                        $greentagiconset = array(
                            1 => "icn_green_heart.png",
                            2 => "icn_green_logistic.png",
                            3 => "icn_green_attraction.png",
                            4 => "icn_green_service.png",
                            5 => "icn_green_community.png",
                            6 => "icn_green_activity.png",
                            7 => "icn_green_plus.png"
                        );
                        $listgreentagid = explode(',', $topblog[$i]["greentags"]);
                        for($j=0;$j < count($listgreentagid);$j++){ ?>
                          <img src="<?php echo base_url();?>assets/img/<?php echo $greentagiconset[$listgreentagid[$j]];?>">
                        <?php
                        }
                        ?>

                    <?php
                    if(strlen(strip_tags($topblog[$i]["story_detail"])) > 200){
                      $newtext = substr($topblog[$i]["story_detail"], 0, 200) . '...';
                      echo $newtext;
                    }
                    else{
                      echo $topblog[$i]["story_detail"];
                    }
                    ?>

<a class="link" href="<?php echo site_url('blog/detail/'. $topblog[$i]["blog_id"]);?>">Read More

          <?php
          }
          else{
            if($i == 1){ ?>

            <?php } ?>

                  <div class="photo" onclick="window.location.href= base_url + 'blog/detail/' + <?php echo $topblog[$i]["blog_id"];?>"><img src="<?php echo base_url();?>upload/blog/<?php echo $topblog[$i]["blog_id"] . "/" . $topblog[$i]["coverphoto"];?>">

<img src="<?php echo base_url();?>assets/img/icn_green_attraction_white.png">

<a class="button button-default button-small button-vote <?php echo (in_array($topblog[$i]["blog_id"], $listblogidbyuser) ? 'active' : '')?>" id="votetopblog_<?php echo $topblog[$i]["blog_id"];?>" onclick="<?php echo (in_array($topblog[$i]["blog_id"], $listblogidbyuser) ? 'unlikeblog(this)' : 'likeblog(this)')?>" value="<?php echo $topblog[$i]["blog_id"];?>"><?php echo $topblog[$i]["amount_like"]?>

<?php echo $topblog[$i]["amount_view"]?> Views

                    <div class="story-topic" onclick="window.location.href= base_url + 'blog/detail/' + <?php echo $topblog[$i]["blog_id"];?>">

 <?php echo $topblog[$i]["title"]?>

place<?php echo $topblog[$i]["place"]?>, <?php echo $topblog[$i]["province"]?>

                        <?php
                        for($j=0 ;$j < count($topblog[$i]["greentagname"]); $j++){
                          if($j == 0) {?>
                             <a class="tag active" href="<?php echo base_url();?>blog/searchandlistblog?tag=<?php echo $topblog[$i]["tagid"][$j];?>"><?php echo $topblog[$i]["greentagname"][$j]?>
                            <?php
                            if(count($topblog[$i]["greentagname"]) > 1){ ?>
                              <a class="tag active" data-toggle="topblog-dropdown-<?php echo $topblog[$i]["blog_id"];?>">+ <?php echo count($topblog[$i]["greentagname"])-1;?> Mores
                              <div class="dropdown-pane top tag-more" id="topblog-dropdown-<?php echo $topblog[$i]["blog_id"];?>" data-dropdown data-hover="true" data-hover-pane="true">
                            <?php
                            }?>
                          <?php
                          }
                          else{ ?>
                              <a class="tag active" href="<?php echo base_url();?>/blog/searchandlistblog?tag=<?php echo $topblog[$i]["tagid"][$j];?>"><?php echo $topblog[$i]["greentagname"][$j]?>
                          <?php
                          }
                        }
                        if(count($topblog[$i]["greentagname"]) > 1){
                          echo "
";
                        }
                        ?>

          <?php }
        } ?>


text:
package edu.pdx.cs410J.security;

import java.io.*;

/**
 * This is a little guessing game that counts the number of times it
 * takes the user to guess a number between one and ten.
 */
public class GuessingGame implements Game {

  private PrintStream out = System.out;
  private BufferedReader in =
    new BufferedReader(new InputStreamReader(System.in));

  public String getName() {
    return "GuessingGame";
  }

  /**
   * Plays the game
   */
  public void play(GameConsole console) {
    int number = ((int) (Math.random() * 10.0)) + 1;

    out.println("I'm thinking of a number between 1 and 10");

    // First get the preferences
    String prefs = console.readPreferences(this);
    if (prefs == null) {
      System.err.println("** Couldn't read preferences");
      return;
    }

    int highScore = -1;
    try {
      highScore = Integer.parseInt(prefs.trim());
      out.println("The high score is: " + highScore);
    } catch (NumberFormatException ex) {
      // Ignore
    }

    // Guess the number
    int guesses = 1;
    while (true) {
      out.print("Your guess: ");
      int guess = getGuess();
      if ((guess < 1) || (guess > 10)) {
	out.println("Guess a number between 1 and 10");

      } else if (guess > number) {
	out.println("Too high!");

      } else if (guess < number) {
	out.println("Too low!");

      } else {
	out.println("You guessed right!");
	break;
      }

      guesses++;
    }

    out.println("It took you " + guesses + " guesses");

    if ((highScore == -1) || (guesses < highScore)) {
      out.println("A new high score!");
      prefs = guesses + "";
      if (!console.writePreferences(this, prefs)) {
	System.err.println("** Couldn't write preferences");
      }
    }

    out.println("Thanks for playing");
  }

  /**
   * Reads an int from System.in
   */
  private int getGuess() {
    try {
      return Integer.parseInt(in.readLine());

    } catch (NumberFormatException ex) {
      return -1;

    } catch (IOException ex) {
      return -1;
    }
  }

  /**
   * Test program
   */
  public static void main(String[] args) {
    GameConsole console = new GameConsole();
    Game game = new GuessingGame();
    game.play(console);
  }

}


text:
"""Extract JSON data from jmsml_D_Base.xml"""
from collections import OrderedDict, defaultdict

import os
from os.path import join, abspath, normpath
import sys

import xml.etree.ElementTree as ET

import json

PROJECT_PATH = join(abspath(os.path.dirname(__file__)), "")

JMSML_PROJECT_PATH = join(PROJECT_PATH, "../../joint-military-symbology-xml")
XML_INSTANCE_PATH = normpath(join(JMSML_PROJECT_PATH, "instance/"))
BASE_FILE = normpath(join(XML_INSTANCE_PATH, 'jmsml_D_Base.xml'))
JMSML_CONFIG_FILE = normpath(join(JMSML_PROJECT_PATH, 'source/JointMilitarySymbologyLibraryCS/jmsml.config'))

NAMESPACE = "{http://disa.mil/JointMilSyML.xsd}"
import logging

logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)

def create_element_dict(digits, element_id, label):
    ordered_dict = OrderedDict()
    ordered_dict["digits"] = digits
    ordered_dict["label"] = label
    if element_id:
        ordered_dict["id"] = element_id
    return ordered_dict

def ns_tag(tag_name, namespace=NAMESPACE):
    return "%s%s" % (namespace, tag_name)

def extract_two_digit_code_data(tree, element_name1, element_name2):
    context = tree.findall('.//%s%s' % (NAMESPACE, element_name1))
    context_code = tree.findall('.//%s%s' % (NAMESPACE, element_name2))

    ll = []
    used_ids = set()
    for idx, element in enumerate(context):
        digit_one = context_code[idx].find('%sDigitOne' % NAMESPACE)
        digit_two = context_code[idx].find('%sDigitTwo' % NAMESPACE)
        element_id = element.get('ID')
        if element_id not in used_ids:
            label = element.get('Label')
            if 'Extension' in label:
                continue
            ll.append(create_element_dict(digit_one.text + digit_two.text, element_id, label))
            used_ids.add(element_id)

    return sorted(ll, key=lambda x: x['digits'])

def extract_two_digit_code_data2(tree, element_name1, element_name2):
    context = tree.findall('.//%s%s' % (NAMESPACE, element_name1))
    context_code = tree.findall('.//%s%s' % (NAMESPACE, element_name2))

    ll = []
    used_ids = set()
    for idx, element in enumerate(context):
        digit_one = context_code[idx].find('%sDigitOne' % NAMESPACE)
        digit_two = context_code[idx].find('%sDigitTwo' % NAMESPACE)
        element_id = element.get('ID')
        if element_id not in used_ids:
            label = element.get('Label')
            if 'Extension' in label:
                continue
            ll.append(create_element_dict(digit_one.text + digit_two.text, element_id, label))
            used_ids.add(element_id)

    return sorted(ll, key=lambda x: x['digits'])

def extract_symbolset_data(tree):
    context_code = tree.find('.//%sSymbolSetCode' % (NAMESPACE,))
    digit_one = context_code.find('%sDigitOne' % NAMESPACE).text
    digit_two = context_code.find('%sDigitTwo' % NAMESPACE).text
    root = tree.getroot()
    ss_id = root.get('ID')
    ss_label = root.get('Label')
    digits = digit_one + digit_two
    symbol_set_data = create_element_dict(digits, ss_id, ss_label)
    symbol_set_data["dimensionId"] = root.get('DimensionID')
    symbol_set_data["geometry"] = root.get('Geometry')
    return symbol_set_data

def extract_element_data(element, tag_name="EntityCode"):
    code_element = element.find('.//%s%s' % (NAMESPACE, tag_name))
    digit_one = code_element.find('%sDigitOne' % NAMESPACE).text
    digit_two = code_element.find('%sDigitTwo' % NAMESPACE).text or ""

    ss_id = element.get('ID')
    ss_label = element.get('Label')
    digits = digit_one + digit_two
    element_dict = create_element_dict(digits, ss_id, ss_label)
    if 'Graphic' in element.attrib:
        element_dict['graphic'] = element.get('Graphic')
    elif element.get('Icon', '') in  ["FULL_FRAME", 'SPECIAL']:
        element_dict['cloverGraphic'] = element.get('CloverGraphic')
        element_dict['diamondGraphic'] = element.get('DiamondGraphic')
        element_dict['rectangleGraphic'] = element.get('RectangleGraphic')
        element_dict['squareGraphic'] = element.get('SquareGraphic')
    if 'AlternativeGraphic' in element.attrib:
        element_dict['alternativeGraphic'] = element.get('AlternativeGraphic')
    if 'Remarks' in element.attrib:
        element_dict['remarks'] = element.get('Remarks')
    if "LimitUseTo" in element.attrib:
        limit_use_to = [element_id for element_id in element.get('LimitUseTo').split(' ') if element_id]
        limit_use_to.sort()
        element_dict['limitUseTo'] = limit_use_to
    if "Category" in element.attrib:
        element_dict["category"] = element.get('Category')
    if "Icon" in element.attrib:
        element_dict['icon'] = element.get('Icon')
    if "GeometryType" in element.attrib:
        element_dict["geometryType"] = element.get('GeometryType')

    return element_dict

def extract_single_code_data(tree, element_name, id_name='ID'):
    context = tree.findall('.//%s%s' % (NAMESPACE, element_name))
    context_code = tree.findall('.//%s%sCode' % (NAMESPACE, element_name))
    ll = []
    for idx, element in enumerate(context):
        label = element.get('Label')
        if 'Extension' in label:
            continue
        ll.append(create_element_dict(context_code[idx].text, element.get(id_name), label))

    return ll

def extract_amplifier(tree, folder_name):
    def extract_graphics(element):
        graphics = defaultdict(OrderedDict)
        for graphic_element in element.iter(ns_tag('Graphic')):
            sig = graphic_element.get('StandardIdentityGroup')
            graphic = graphic_element.get('Graphic')
            graphics[sig]['graphic'] = folder_name + "/" + graphic
        return graphics

    element_info = []
    for element in tree.iter(ns_tag("Amplifier")):
        label = element.get('Label')
        name = element.get('Name')
        digits = element.find(ns_tag("AmplifierCode")).text
        if 'Extension' in label:
            continue
        status_data = OrderedDict()
        status_data['digits'] = digits
        status_data['label'] = label
        status_data['id'] = name

        graphics_data = extract_graphics(element)
        if graphics_data:
            status_data['graphics'] = graphics_data

        element_info.append(status_data)

    return element_info

def extract_amplifier_groups(tree, echelon_folder, amplifier_folder):
    context = tree.findall('.//%s%s' % (NAMESPACE, "AmplifierGroup"))
    context_code = tree.findall('.//%s%sCode' % (NAMESPACE, "AmplifierGroup"))
    ll = []
    for idx, element in enumerate(context):
        label = element.get('Label')
        if 'Extension' in label:
            continue
        if "Echelon" in label:
            folder_name = echelon_folder
        else:
            folder_name = amplifier_folder
        amplifiers = extract_amplifier(element, folder_name)
        dd = create_element_dict(context_code[idx].text, element.get('Name'), label)
        dd["descriptors"] = amplifiers
        ll.append(dd)

    return ll

def extract_symbol_set_instance(instance_file_name):
    log.info("Processing %s", instance_file_name)
    full_instance_file_name = join(XML_INSTANCE_PATH, instance_file_name)
    if not os.path.exists(full_instance_file_name):
        print "Could not find %s" % full_instance_file_name
        return

    tree = ET.parse(full_instance_file_name)
    symbol_set_data = extract_symbolset_data(tree)
    # entities = []
    # for entity_element in tree.iter(ns_tag("Entity")):
    #     entity_data = extract_element_data(entity_element)
    #     entity_types = []
    #     for entity_type_element in entity_element.iter(ns_tag("EntityType")):
    #         entity_type_data = extract_element_data(entity_type_element, "EntityTypeCode")
    #         entity_sub_types = []
    #         for entity_sub_type_element in entity_type_element.iter(ns_tag("EntitySubType")):
    #             entity_sub_type_data = extract_element_data(entity_sub_type_element, "EntitySubTypeCode")
    #             entity_sub_types.append(entity_sub_type_data)
    #
    #         entity_type_data["entitySubTypes"] = entity_sub_types
    #         entity_types.append(entity_type_data)
    #
    #     entity_data["entityTypes"] = entity_types
    #     entities.append(entity_data)
    #
    # SpecialEntitySubTypes
    special_entity_sub_types_element = tree.find(ns_tag("SpecialEntitySubTypes"))
    special_entity_sub_types = []
    if special_entity_sub_types_element is not None:
        for entity_sub_type_element in special_entity_sub_types_element.iter(ns_tag("EntitySubType")):
            entity_sub_type_data = extract_element_data(entity_sub_type_element, "EntitySubTypeCode")
            special_entity_sub_types.append(entity_sub_type_data)

    #
    # # sector one modifier
    # sector_one_modifiers_element = tree.find(ns_tag("SectorOneModifiers"))
    # sector_one_modifiers = []
    # if sector_one_modifiers_element is not None:
    #     for modifier_one_element in sector_one_modifiers_element.iter(ns_tag("Modifier")):
    #         modifier_one_data = extract_element_data(modifier_one_element, "ModifierCode")
    #         sector_one_modifiers.append(modifier_one_data)
    #
    # # sector two modifier
    # sector_two_modifiers_element = tree.find(ns_tag("SectorTwoModifiers"))
    # sector_two_modifiers = []
    # if sector_two_modifiers_element is not None:
    #     for modifier_two_element in sector_two_modifiers_element.iter(ns_tag("Modifier")):
    #         modifier_two_data = extract_element_data(modifier_two_element, "ModifierCode")
    #         sector_two_modifiers.append(modifier_two_data)

    # symbol_set_data["entities"] = sorted(entities, key=lambda x: x['digits'])
    if special_entity_sub_types:
        symbol_set_data["specialEntitySubTypes"] = sorted(special_entity_sub_types, key=lambda x: x['digits'])
    # symbol_set_data["sectorOneModifiers"] = sector_one_modifiers
    # symbol_set_data["sectorTwoModifiers"] = sector_two_modifiers
    return symbol_set_data

def extract_symbol_sets(tree):
    symbol_set_ref = tree.findall('.//%s%s' % (NAMESPACE, "SymbolSetRef"))
    symbol_set_instances = set(
        [element.get('Instance') for element in symbol_set_ref if element.get('Label', '') != "Internal"])
    symbol_sets = [extract_symbol_set_instance(fn) for fn in symbol_set_instances]
    return sorted(symbol_sets, key=lambda x: x['digits'])

def extract_affiliations(tree, frame_folders):
    affiliations = defaultdict(lambda: defaultdict(OrderedDict))
    for affiliation_element in tree.iter(ns_tag("Affiliation")):
        context_id = affiliation_element.get('ContextID')
        if context_id == "INTERNAL":
            continue
        if context_id in frame_folders:
            folder = frame_folders[context_id]["folderName"] + "/"
        dimension_id = affiliation_element.get('DimensionID')
        standard_identity_id = affiliation_element.get('StandardIdentityID')
        shape = affiliation_element.get('Shape')
        graphic = affiliation_element.get('Graphic')
        planned_graphic = affiliation_element.get('PlannedGraphic')
        civilian_graphic = affiliation_element.get('CivilianGraphic')
        planned_civilian_graphic = affiliation_element.get('PlannedCivilianGraphic')
        gi = OrderedDict()
        if graphic:
            gi["graphic"] = folder + graphic
        if planned_graphic:
            gi["plannedGraphic"] = folder + planned_graphic
        if civilian_graphic:
            gi["civilianGraphic"] = folder + civilian_graphic
        if planned_civilian_graphic:
            gi["plannedCivilianGraphic"] = folder + planned_civilian_graphic

        affiliation = affiliations[context_id]
        affiliation[dimension_id][standard_identity_id] = gi
    return affiliations

def extract_dimensions(tree, ):
    dimensions = []
    for dimension_element in tree.iter(ns_tag("Dimension")):
        dimension_id = dimension_element.get('ID')
        if dimension_id == 'INTERNAL':
            continue
        geometry = dimension_element.get('Geometry')
        label = dimension_element.get('Label')
        dimension_data = OrderedDict()
        dimension_data['id'] = dimension_id
        dimension_data['label'] = label
        dimension_data['geometry'] = geometry
        dimensions.append(dimension_data)

    return dimensions

def extract_standard_identity_groups(tree):
    sigs = {}
    si_to_sig = {}
    for sig_element in tree.iter(ns_tag("StandardIdentityGroup")):
        sig_id = sig_element.get('ID')
        label = sig_element.get('Label')
        sig_ids = sig_element.get('StandardIdentityIDs').split(" ")
        for si_id in sig_ids:
            si_to_sig[si_id] = sig_id
        sigs[sig_id] = sig_ids

    return sigs, si_to_sig

def extract_standard_identities(tree):
    standard_identities = extract_single_code_data(tree, "StandardIdentity")
    return standard_identities

def extract_status_or_hqtfd(tree, element_name, folder_name):
    def extract_sub_graphics(element):
        graphics = defaultdict(lambda: defaultdict(OrderedDict))
        for graphic_element in element.iter(ns_tag('Graphic')):
            sig = graphic_element.get('StandardIdentityGroup')
            dimension = graphic_element.get('Dimension')
            graphic = graphic_element.get('Graphic')
            sigd = graphics[sig]
            sigd[dimension]['graphic'] = folder_name + "/" + graphic
        return graphics

    element_info = []
    for element in tree.iter(ns_tag(element_name)):
        label = element.get('Label')
        name = element.get('Name')
        digits = element.find(ns_tag("%sCode" % element_name)).text
        if 'Extension' in label:
            continue
        status_data = OrderedDict()
        status_data['digits'] = digits
        status_data['id'] = name
        status_data['label'] = label
        if "LabelAlias" in element.attrib:
            status_data['labelAlias'] = element.get('LabelAlias')
        if "Graphic" in element.attrib:
            status_data['graphic'] = folder_name + "/" + element.get('Graphic')

        graphics_data = extract_sub_graphics(element)
        if graphics_data:
            status_data['graphics'] = graphics_data

        element_info.append(status_data)

    return element_info

def extract_jmsml_data(frame_folders, oca_folder, hqtffd_folder, echelon_folder, amplifier_folder):
    if not os.path.exists(BASE_FILE):
        print "Could not find %s" % BASE_FILE
        sys.exit(1)
    tree = ET.parse(BASE_FILE)
    symbol_data = OrderedDict()
    symbol_data['contexts'] = extract_single_code_data(tree, "Context")
    sig, si2sig = extract_standard_identity_groups(tree)
    symbol_data['standardIdentities'] = extract_standard_identities(tree)
    symbol_data['symbolSets'] = extract_symbol_sets(tree)
    symbol_data['statuses'] = extract_status_or_hqtfd(tree, "Status", oca_folder)
    symbol_data['hqtfDummies'] = extract_status_or_hqtfd(tree, "HQTFDummy", hqtffd_folder)
    symbol_data['amplifier'] = extract_amplifier_groups(tree, echelon_folder, amplifier_folder)
    symbol_data['affiliations'] = extract_affiliations(tree, frame_folders)
    symbol_data['dimensions'] = extract_dimensions(tree)
    symbol_data['standardIdentityGroupMapping'] = si2sig

    return symbol_data

def extract_jmsml_config_data():
    log.info("Processing configuration file %s", JMSML_CONFIG_FILE)
    tree = ET.parse(JMSML_CONFIG_FILE)
    parent_map = dict((c, p) for p in tree.getiterator() for c in p)

    def get_full_folder_path(element):
        parent_element = parent_map.get(element)
        if parent_element is not None and parent_element.tag == ns_tag("GraphicFolder",
                                                                       "{http://esri.com/jmsmlConfig.xsd}"):
            return get_full_folder_path(parent_element) + "/" + element.get('Name')
        else:
            return element.get('Name')

    symbol_set_folders = defaultdict(dict)
    frames = defaultdict(dict)
    for entity_element in tree.iter(ns_tag("GraphicFolder", "{http://esri.com/jmsmlConfig.xsd}")):
        symbol_set_id = ""
        if "Entities" in entity_element.attrib:
            symbol_set_id = entity_element.get('Entities').split()
            sub_key = "entities"
        elif "ModifierOnes" in entity_element.attrib:
            symbol_set_id = entity_element.get('ModifierOnes').split()
            sub_key = "modifierOnes"
        elif "ModifierTwos" in entity_element.attrib:
            symbol_set_id = entity_element.get('ModifierTwos').split()
            sub_key = "modifierTwos"
        elif "Frames" in entity_element.attrib:
            frames[entity_element.get('Frames')]["folderName"] = get_full_folder_path(entity_element)
            continue
        elif "OCA" in entity_element.attrib:
            oca_folder = get_full_folder_path(entity_element)
        elif "HQTFFD" in entity_element.attrib:
            hqtffd_folder = get_full_folder_path(entity_element)
        elif "Echelons" in entity_element.attrib:
            echelon_folder = get_full_folder_path(entity_element)
        elif "Mobilities" in entity_element.attrib:
            amplifier_folder = get_full_folder_path(entity_element)

        for key in symbol_set_id:
            symbol_set_folders[key][sub_key] = get_full_folder_path(entity_element)
            print symbol_set_folders[key][sub_key]

    return symbol_set_folders, frames, oca_folder, hqtffd_folder, echelon_folder, amplifier_folder,

if __name__ == '__main__':
    log.info('Looking for JMSML files in %s', abspath(JMSML_PROJECT_PATH))

    symbolset_folders, frame_folders, oca_folder, hqtffd_folder, echelon_folder, amplifier_folder = extract_jmsml_config_data()
    jmsml_data = extract_jmsml_data(frame_folders, oca_folder, hqtffd_folder, echelon_folder, amplifier_folder)

    for symbol_set in jmsml_data["symbolSets"]:
        symbol_set["graphicFolder"] = symbolset_folders[symbol_set['id']]

    DEST_FILE = join(PROJECT_PATH, '../data/jmsml.json')

    with open(DEST_FILE, 'w') as f:
        json_code = json.dumps(jmsml_data, indent=2)
        config_json_code = json.dumps(symbolset_folders, indent=2)
        f.write(json_code)


text:
title: "Blog Roadmap"
date: 2017-07-05
draft: false
comments: false
lastmod: 2017-12-31
---

Below you will find a roadmap for this blog.  I will check tings off as I work through them.

[x] Migrate to [GoHugo](http://gohugo.io/) on [Netlify](https://www.netlify.com/)

[x] Verify links from Google

[x] Add basic [Staticman](https://staticman.net/) commenting

[x] Add e-mail notifications and subscriptions for [Staticman](https://staticman.net/)

[x] Add reply to comment for [Staticman](https://staticman.net/)

[x] Begin documenting daily/weekly reading for people that ask for that sort of thing.

[ ] Add status page for home lab using backend API and dynamic updating


text:
require 'spree_core'
require 'spree_cms_order_manage/engine'


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharp_Neural_Network
{
    abstract class Layer
    {
        public abstract Neuron[] Neurons { get; }

        public void FeedForward()
        {
            foreach (var neuron in Neurons)
                neuron.FeedForward();
        }

        public void PropagateBack()
        {
            foreach (var neuron in Neurons)
                neuron.PropagateBack();
        }

    }
}


text:
/* eslint-disable no-eval */
import { TreeViewRedux } from '../tree-view';
import CatalogResource from '../data-tables/catalog-resource';

export const InputTypes = {
  TEXTAREA: 'text_area',
  CHECKBOX: 'checkbox',
  COMPONENT: 'component',
};

export const DynamicReactComponents = {
  TREE_VIEW_REDUX: TreeViewRedux,
  CATALOG_RESOURCE: CatalogResource,
};

const dataType = (data) => (data ? data.constructor.name.toString() : undefined);

export const isObject = (item) => dataType(item) === 'Object';

export const isArray = (item) => dataType(item) === 'Array';

export const isSubItem = (item) => item.sub_items && item.sub_items.length > 0;

/** When the props named mode includes 'miq_summary', then then summary contains row/cell click events. */
export const hasClickEvents = (mode) => mode.includes('miq_summary');

export const hasInput = (item) => item && Object.keys(item).includes('input');

export const rowClickEvent = (rows, index) => {
  const item = rows[index];
  if (item && item.onclick) {
    miqSparkleOn();
    eval(item.onclick);
    miqSparkleOff();
  }
};


text:
/**
 * Immutable set of http headers.
 */
export class RevivalHeaders {
  private readonly headers: Map<string, string[]> = new Map<string, string[]>();
  private readonly normalizedNames: Map<string, string> = new Map();

  constructor(headers?: string | { [name: string]: string | string[] }) {
    if (!headers) {
      return;
    }

    if (typeof headers === "string") {
      headers.split("\u000d\u000a").forEach(line => {
        let index = line.indexOf("\u003a\u0020");
        if (index > 0) {
          let name = line.slice(0, index);
          let value = line.slice(index + 1).trim();
          this.append(name, value);
        }
      });
    } else {
      Object.keys(headers).forEach(name => {
        let values: string | string[] = headers[name];
        let key = name.toLowerCase();
        if (typeof values === "string") {
          values = [values];
        }
        if (values.length > 0) {
          this.headers.set(name, values);
          this.setNormalizedName(key, name);
        }
      });
    }
  }

  private setNormalizedName(lowerCaseName: string, name: string) {
    if (!this.normalizedNames.has(lowerCaseName)) {
      this.normalizedNames.set(lowerCaseName, name);
    }
  }

  /**
   * Returns the names of the headers
   */
  keys(): string[] {
    return Array.from(this.normalizedNames.values());
  }

  /**
   * Checks for existence of header by given name.
   */
  has(name: string): boolean {
    return this.headers.has(name.toLowerCase());
  }

  /**
   * Get the first header which matches given name.
   *
   * @param name name of the header
   * @returns first header
   */
  get(name: string): string | null {
    let values = this.headers.get(name.toLowerCase());
    return values && values.length > 0 ? values[0] : null;
  }

  /**
   * Get all headers which matches given name.
   *
   * @param name name of the header
   * @returns all headers matches given name
   */
  getAll(name: string): string[] | null {
    return this.headers.get(name.toLowerCase()) || null;
  }

  /**
   * Append key-value into current headers. This will not override existed
   * value with the same key.
   *
   * @param name name to append
   * @param value to append
   * @see set
   */
  append(name: string, value: string | string[]): void {
    let key = name.toLowerCase();
    this.setNormalizedName(key, name);
    if (this.headers.has(key)) {
      this.headers.get(key)!.push(...value);
    } else {
      this.headers.set(key, typeof value === "string" ? [value] : value);
    }
  }

  /**
   * Append key-value into current headers. This will override existed
   * value with the same key.
   *
   * @param name name to append
   * @param value to append
   * @see append
   */
  set(name: string, value: string | string[]): void {
    let key = name.toLowerCase();
    this.setNormalizedName(key, name);
    this.headers.set(key, typeof value === "string" ? [value] : value);
  }

  /**
   * Delete key-value from current headers.
   *
   * @param name name in headers
   * @param value to delete
   */
  delete(name: string, value?: string | string[]): void {
    let key = name.toLowerCase();
    if (!this.headers.has(key)) {
      return;
    }

    if (!value) {
      this.headers.delete(key);
      this.normalizedNames.delete(key);
    } else {
      let existing = this.headers.get(key);
      if (!existing) {
        return;
      }
      existing = existing.filter(v => value.indexOf(v) === -1);
      if (existing.length === 0) {
        this.headers.delete(key);
        this.normalizedNames.delete(key);
      } else {
        this.headers.set(key, existing);
      }
    }
  }

  /**
   * Clone a new {@link RevivalHeaders}.
   *
   * @returns {@link RevivalHeaders}
   */
  clone(): RevivalHeaders {
    let clone = new RevivalHeaders();
    this.forEach((name: string, values: string | string[]) => {
      clone.set(name, values);
    });

    return clone;
  }

  /**
   * Performs the specified action for each element in current headers.
   *
   * @param callbackfn calls the callbackfn function one time
   * for each element in headers.
   */
  forEach(callbackfn: (name: string, values: string[]) => void) {
    Array.from(this.normalizedNames.keys()).forEach(key =>
      callbackfn(this.normalizedNames.get(key)!, this.headers.get(key)!)
    );
  }
}


text:
@interface CCMenuItemController : NSObject

@property (nonatomic, strong) NSMutableArray *menuItemList;

- (unsigned) countOfList;
- (CCMenuItem *)objectInListAtIndex:(unsigned)index;
- (void) addMenuItemWithTitle:(NSString *)title badges:(NSMutableArray *)badges day:(NSString *)day station:(NSString *)station type:(NSString *)type;
- (void) addMenuItem:(CCMenuItem *)menuItem;

@end


text:
<?php

namespace Oro\Bundle\SecurityBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;

class PermissionCollectionType extends AbstractType
{
    const NAME = 'oro_acl_permission_collection';

    /**
     * {@inheritdoc}
     */
    public function buildView(FormView $view, FormInterface $form, array $options)
    {
        $view->vars['privileges_config'] = $options['entry_options']['privileges_config'];
    }

    /**
     * {@inheritdoc}
     */
    public function getName()
    {
        return $this->getBlockPrefix();
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return self::NAME;
    }

    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return CollectionType::class;
    }
}


text:
package org.elasticsearch.action.fieldcaps;

import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.action.support.single.shard.SingleShardRequest;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;

import java.io.IOException;

public class FieldCapabilitiesIndexRequest
    extends SingleShardRequest<FieldCapabilitiesIndexRequest> {

    private String[] fields;

    // For serialization
    FieldCapabilitiesIndexRequest() {}

    FieldCapabilitiesIndexRequest(String[] fields, String index) {
        super(index);
        if (fields == null || fields.length == 0) {
            throw new IllegalArgumentException("specified fields can't be null or empty");
        }
        this.fields = fields;
    }

    public String[] fields() {
        return fields;
    }

    @Override
    public void readFrom(StreamInput in) throws IOException {
        super.readFrom(in);
        fields = in.readStringArray();
    }

    @Override
    public void writeTo(StreamOutput out) throws IOException {
        super.writeTo(out);
        out.writeStringArray(fields);
    }

    @Override
    public ActionRequestValidationException validate() {
        return null;
    }
}


text:
/*
 * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package net.java.sip.communicator.impl.protocol.sip.xcap.model;

/**
 * Exceptions of this class get thrown whenever an error occurs while operating
 * with XCAP server.
 *
 * @author Grigorii Balutsel
 */
public class ParsingException extends Exception
{
    /**
     * Serial versionUID.
     */
    private static final long serialVersionUID = 0L;

    /**
     * Creates a new XCapException instance
     * which does not give a human-readable explanation why the operation is
     * not supported.
     */
    public ParsingException()
    {
    }

    /**
     * Creates a new XCapException instance whith human-readable
     * explanation.
     *
     * @param message the detailed message explaining any particular details as
     *                to why is not the specified operation supported or null if
     *                no particular details exist.
     */
    public ParsingException(String message)
    {
        super(message);
    }

    /**
     * Creates a new XCapException instance with human-readable
     * explanation and the original cause of the problem.
     *
     * @param message the detailed message explaining any particular details as
     *                to why is not the specified operation supported or null if
     *                no particular details exist.
     * @param cause   the original cause of the problem.
     */
    public ParsingException(String message, Throwable cause)
    {
        super(message, cause);
    }

    /**
     * Creates a new XCapException instance with the original cause
     * of the problem.
     *
     * @param cause the original cause of the problem.
     */
    public ParsingException(Throwable cause)
    {
        super(cause);
    }
}


text:
<?php

/**
 * Description of UpdateParser
 *
 * @author pjotr
 */
class UpdateParser extends AbstractParser {

    //put your code here

    public function parse(Array &$postData) {
        $update = NULL;
        if ($this->isValid($postData)) {
            $message = $this->getObject('message', $postData, new MessageParser());
            $update = new Update($postData['update_id'], $message);
        } else {
            throw new Exception('Invalid message was given: ' . print_r($postData, true));
        }
        return $update;
    }

    public function isValid(array &$postData) {
        return count($postData) < 3 && count($postData) > 0 && isset($postData['update_id']);
    }

}


text:
from thrift.protocol import TBinaryProtocol
from thrift.transport import TTransport

def serialize(thrift_object,
              protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
    transport = TTransport.TMemoryBuffer()
    protocol = protocol_factory.getProtocol(transport)
    thrift_object.write(protocol)
    return transport.getvalue()

def deserialize(base,
                buf,
                protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
    transport = TTransport.TMemoryBuffer(buf)
    protocol = protocol_factory.getProtocol(transport)
    base.read(protocol)
    return base


text:
'use strict';

var path = require('path');

module.exports = function(grunt) {
  grunt.initConfig({
    express: {
      statics: {
        options: {
          bases: path.resolve('./public')
        }
      },
      multiStatics: {
        options: {
          bases: [path.resolve('./public'), path.resolve('./public2')],
          port: 4000
        }
      }
    }
  });

  // Load helper tasks
  grunt.loadTasks('../../tasks');
  // Load this express task
  grunt.loadTasks('../../../tasks');
  grunt.registerTask('default', ['express']);
};


text:
<?php

namespace Omnipay\RentMoola\Message;

use Omnipay\Tests\TestCase;

class UpdateCCPaymentMethodRequestTest extends TestCase
{
    public function setUp()
    {
        $this->request = new UpdateCCPaymentMethodRequest(
            $this->getHttpClient(),
            $this->getHttpRequest()
        );
        $this->request->initialize(
            array(
                'userId' => '24a58d3c-4774-48bb-803a-b0ccc6b2d8d5',
                'paymentMethodId' => 'd502ad2d-e103-4e04-b2a2-fdd7c547eb06',
                'name' => 'Joe Smith',
                'number' => '4444333322221111',
                'cvc' => '212',
                'expiryMonth' => '09',
                'expiryYear' => '2018',
                'destinationAccountId' => '41fcd0ff-7c57-403a-9bd5-e850056fdc2a',
                'state' => 'WA',
                'country' => 'USA',
                'zip' => '90210',
                'city' => 'Tampa',
                'address1' => '124 West Street',
                'address2' => '126 West Street',
            )
        );
    }

    public function testSendSuccess()
    {
        $this->setMockHttpResponse('UpdateCCPaymentMethodSuccess.txt');
        $response = $this->request->send();

        $this->assertTrue($response->isSuccessful());
        $this->assertFalse($response->isRedirect());
        $this->assertNull($response->getErrorMessage());
        $this->assertNull($response->getErrorCode());
    }

    public function testSendFailure()
    {
        $this->setMockHttpResponse('UpdateCCPaymentMethodFailure.txt');
        $response = $this->request->send();

        $this->assertFalse($response->isSuccessful());
        $this->assertFalse($response->isRedirect());
        $this->assertEquals("may not be empty", $response->getErrorMessage());
    }
}


text:
<?php

namespace Laminas\ModuleManager\Feature;

interface ControllerProviderInterface
{
    /**
     * Expected to return \Laminas\ServiceManager\Config object or array to seed
     * such an object.
     *
     * @return array|\Laminas\ServiceManager\Config
     */
    public function getControllerConfig();
}


text:
<!doctype html>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />

<title>Francis A. Sooy - Biography - A History of UCSF</title>
<link href='http://fonts.googleapis.com/css?family=Gilda+Display|PT+Sans+Narrow:300' rel='stylesheet' type='text/css'>
<link href="ucsf_history.css" rel="stylesheet" type="text/css" media="all" />
{% include google_analytics.html %}

{% include ucsf_banner.html %}

A History of UCSF

People

FRANCIS A. SOOY (1915-1986)

Francis A. Sooy was born in Coalinga, California on July 1, 1915. He received his AB degree from the University of California, Berkeley, in 1937, and received his M.D. degree from the University of California School of Medicine in 1941.

After graduating from the School of Medicine, Sooy served as a lieutenant in the U.S. Naval Medical Corps in World War II.  After the war ended he returned to San Francisco and joined the faculty in 1946. After several years as an associate professor, he rose to full professorship in the School of Medicine in 1961. Dr. Sooy became the Chairman of the Division of Otolaryngology in the Department of Surgery in 1958. He was subsequently named the first Chairman of the Department of Otolaryngology in 1967.

In 1972, Francis A. Sooy became the fourth Chancellor of UCSF, and the first UCSF alumnus Chancellor.  He continued his medical practice during his ten-year chancellorship.  Some of his accomplishments as Chancellor included making possible the construction of the School of Dentistry building and the Long addition to Moffitt Hospital project, as well as the establishment of the Board of Overseers and the UCSF Foundation.

Sooy had a strong sense of traditions at UCSF. As a result, he established the UCSF Medal, the highest award bestowed by the campus, and in 1982, he inaugurated Founder's Day, an annual celebration of UCSF's contributions to the people of California. The first Founder's Day was dedicated to Dr. Sooy, and during the celebration he was awarded the UCSF Medal.  In 1982, Sooy stepped down from as Chancellor and returned to his clinical practice and teaching at UCSF.

Francis A. Sooy was internationally renowned as a surgeon. He is credited with introducing vastly improved methods in the surgical treatment of deafness, and was considered a national expert on tinnitus and Menier's disease. He held memberships in numerous professional societies, including the Pacific Coast Oto-Ophthalmological Society, and of the Society of University Otolaryngologists.  He served as president of Collegium Oto-Rhino-Laryngologicum Amicitiae Sacrum, and the president of the American Laryngological, Rhinological, and Otological Society.

Dr. Sooy loved to teach.  He produced and aided in the production of teaching films and participated in several television and radio productions. One of his greatest desires was to "build young doctors". He was active in public service, and known for his wise judgment and sincere interest in people.

Francis A. Sooy died on September 12, 1986, while flying his friend's World War II trainer biplane in Rio Vista, Solano County, California.

{% include search_include.html %}

  THE STORY

  SPECIAL TOPICS

PEOPLE

  PHOTOS

  BUILDINGS

  HOME

{% include footer.html %}

{% include bottom_js.html %}


text:
namespace Microsoft.PackageManagement.Internal.Utility.Platform {
    using System;
    using System.Runtime.InteropServices;

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    internal class WinTrustFileInfo {
#if !CORECLR
        private UInt32 StructSize = (UInt32)Marshal.SizeOf(typeof(WinTrustFileInfo));
#else
        private UInt32 StructSize = (UInt32)Marshal.SizeOf<WinTrustFileInfo>();
#endif
        private IntPtr FilePath; // required, file name to be verified
        private IntPtr hFile = IntPtr.Zero; // optional, open handle to FilePath
        private IntPtr pgKnownSubject = IntPtr.Zero; // optional, subject type if it is known

        public WinTrustFileInfo(String filePath) {
#if CORECLR
            FilePath = Marshal.StringToCoTaskMemUni(filePath);
#else
            FilePath = Marshal.StringToCoTaskMemAuto(filePath);
#endif
        }

        ~WinTrustFileInfo() {
            Marshal.FreeCoTaskMem(FilePath);
        }
    }
}


text:
import React, {Component} from 'react'

import { ListGroup, ListGroupItem, Media } from 'react-bootstrap'

export default class AddsList extends Component {
    render() {
        return (
            <ListGroup className='panelGroupList' fill>
                <ListGroupItem className='noBorder'>
                    <Media>
                        <Media.Left>

                        </Media.Left>
                        <Media.Body>
                            <Media.Heading>Media Heading</Media.Heading>

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

                        </Media.Body>
                    </Media>
                </ListGroupItem>
                <ListGroupItem className='noBorder'>
                    <Media>
                        <Media.Left>

                        </Media.Left>
                        <Media.Body>
                            <Media.Heading>Media Heading</Media.Heading>

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

                        </Media.Body>
                    </Media>
                </ListGroupItem>
                <ListGroupItem className='noBorder'>
                    <Media>
                        <Media.Left>

                        </Media.Left>
                        <Media.Body>
                            <Media.Heading>Media Heading</Media.Heading>

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

                        </Media.Body>
                    </Media>
                </ListGroupItem>
            </ListGroup>
        );
    }
}


text:
<?php
class FilterIntervalTimeSlider extends FilterIntervalDateSlider
{
	/**
	 * The array reprsenting the 1st January of 1970 (00:00:00)
	 * @type Array
	 */
	protected $baseDateArray = array();

	public function FilterIntervalTimeSlider($fName, $pageObject, $id, $viewControls)
	{
		parent::FilterIntervalDateSlider($fName, $pageObject, $id, $viewControls);
		$this->baseDateArray = array(1970, 1, 1, 0, 0, 0);
	}

	/**
	 * Get the date-time array representation
	 * @param String value
	 * @param Boolean forCaption
	 * @return Array
	 */
	protected function getDateTimeArray($value, $forCaption = false)
	{
		if($forCaption)
		{
			$timeArray = parsenumbers($value);
			return array(0, 0, 0, $timeArray[0], $timeArray[1] ,$timeArray[2]);
		}
		$timeInSeonds = $this->getValueInSeconds($value);
		return addSeconds($this->baseDateArray, $timeInSeonds);
	}

	/**
	 * Get the value converted into seconds
	 * @param String value
	 * @return Number
	 */
	protected function getValueInSeconds($value)
	{
		$timeArray = parsenumbers($value);
		return $timeArray[2] + $timeArray[1] * 60 + $timeArray[0] * 3600;
	}

	/**
	 * Get the full caption value for the slider with the 'seconds' step type
	 * @param Array dateArray
	 * @return String
	 */
	protected function getSecondsCaption($dateArray)
	{
		return str_format_time($dateArray);
	}

	/**
	 * Get the full caption value for the slider with the 'minutes' step type
	 * @param Array dateArray
	 * @return String
	 */
	protected function getMinutesCaption($dateArray)
	{
		global $locale_info;
		$dateArray[5] = 0;

		$timeFormatString = str_replace( $locale_info["LOCALE_STIME"]."ss", "", $locale_info["LOCALE_STIMEFORMAT"]);
		return format_datetime_custom($dateArray, $timeFormatString);
	}

	/**
	 * Get the full caption value for the slider with the 'hours' step type
	 * @param Array dateArray
	 * @param Boolean isLower
	 * @return String
	 */
	protected function getHoursCaption($dateArray, $isLower)
	{
		global $locale_info;

		$hours = $this->getAdjustedHoursValue($dateArray[3], $dateArray[4], $isLower);
		$dateArray[3] = $dateArray[4] = $dateArray[5] = 0;
		$dateArray = addHours($dateArray, $hours);

		$timeFormatString = str_replace( $locale_info["LOCALE_STIME"]."ss", "", $locale_info["LOCALE_STIMEFORMAT"]);
		return format_datetime_custom($dateArray, $timeFormatString);
	}

	/**
	 * Check if there are database values for the filter's field
	 * that are differs from each other for more than a step value
	 * @param Array data
	 * @return Boolean
	 */
	protected function fieldHasNoRange($data)
	{
		if (is_null( $data['sliderMin'] ) && is_null( $data['sliderMax'] ) || $data['sliderMax'] == $data['sliderMin'])
			return true;

		$step = $this->getStepValue();
		$minSec = $this->getValueInSeconds( $data['sliderMin'] );
		$maxSec = $this->getValueInSeconds( $data['sliderMax'] );

		if( ($maxSec - $minSec) < $step )
			return true;

		return false;
	}

	/**
	 * Get the html markup for the slider knobs' captions
	 * @return String
	 */
	protected function getCaptionSpansHTML()
	{
		$minSpan = ''.$this->getMinSpanValue().'';
		$maxSpan = ''.$this->getMaxSpanValue().'';
		$captionSpans = $minSpan." -&nbsp".$maxSpan;

		return $captionSpans;
	}

	/**
	 * Add filter control's data to the ControlsMap
	 * @param Object pageObj
	 */
	public function addFilterControlToControlsMap($pageObj)
	{
		$ctrlsMap = $this->getBaseContolsMapParams();
		$ctrlsMap['isFieldTimeType'] = true;

		$pageObj->controlsMap["filters"]["controls"][] = $ctrlsMap;
	}

	/**
	 * Get the time slider's where
	 * @return string
	 */
	static function getTimeSliderWhere($fName, $pSet, $cipherer, $table, $SearchFor, $SearchFor2, $strSearchOption, $fullFieldName)
	{
		$firstDelimPos = strpos($SearchFor, ":");
		$lastDelimPos = strrpos($SearchFor, ":");
		if($firstDelimPos === FALSE || $firstDelimPos == $lastDelimPos)
			return "";

		$stepType = $pSet->getFilterStepType($fName);

		$value1 = $cipherer->MakeDBValue($fName, $SearchFor, "", "", true);

		switch($strSearchOption)
		{
			case "slider":
				$firstDelimPos = strpos($SearchFor2, ":");
				$lastDelimPos = strrpos($SearchFor2, ":");
				if($firstDelimPos === FALSE || $firstDelimPos == $lastDelimPos)
					return "";

				$cleanvalue2 = prepare_for_db($fName, $SearchFor2, "");
				$timeArr = parsenumbers($cleanvalue2);

				if($stepType == FSST_SECONDS)
					$timeArr = addSecondsToTime($timeArr, 1);
				else
					$timeArr = addMinutesToTime($timeArr, 1);

				$hours = $timeArr[0] < 10 ? '0'.$timeArr[0] : $timeArr[0];
				$minutes = $timeArr[1] < 10 ? '0'.$timeArr[1] : $timeArr[1];
				$seconds = $timeArr[2] < 10 ? '0'.$timeArr[2] : $timeArr[2];

				$value2 = $hours.":".$minutes.":".$seconds;
				$value2 = add_db_quotes($fName, $value2, $table);

				return $fullFieldName.">=".$value1." and ".$fullFieldName."<".$value2;;

			case 'moreequal':
				return $fullFieldName.">=".$value1;

			case 'lessequal':
				return $fullFieldName."<=".$value1;

			default:
				return "";
		}
	}
}
?>


text:
#if !defined(XALANNODELISTDUMMY_HEADER_GUARD_1357924680)
#define XALANNODELISTDUMMY_HEADER_GUARD_1357924680

#include <xalanc/XalanDOM/XalanDOMDefinitions.hpp>

#include <xalanc/XalanDOM/XalanNodeList.hpp>

namespace XALAN_CPP_NAMESPACE {

class XALAN_DOM_EXPORT XalanNodeListDummy : public XalanNodeList
{
public:

    XalanNodeListDummy();

    virtual
    ~XalanNodeListDummy();

    XalanNodeListDummy&
    operator=(const XalanNodeListDummy&     /* theSource */)
    {
        return *this;
    }

    virtual XalanNode*
    item(XalanSize_t    index) const;

    virtual XalanSize_t
    getLength() const;

private:
};

}

#endif  // !defined(XALANNODELISTSURROGATE_HEADER_GUARD_1357924680)