thrift IDL 生成代码的管理脚本
随着项目增多,thriftIDL生成代码的管理也越复杂。此工具用于生成thrift的代码,尽量使其脚本化,可配置,自动化。 无 #!/usr/bin/env php?php/** * 随着项目增多,thrift IDL 生成代码的管理也越复杂。 * 此工具用于生成 thrift 的代码,尽量使其脚本化,自
随着项目增多,thrift IDL 生成代码的管理也越复杂。此工具用于生成 thrift 的代码,尽量使其脚本化,可配置,自动化。
#!/usr/bin/env php <?php /** * 随着项目增多,thrift IDL 生成代码的管理也越复杂。 * 此工具用于生成 thrift 的代码,尽量使其脚本化,自动化。 * * 使用方法: * ./cthrift cms-exmaple ./cthrift.config.php * * cthrift.config.php 是个配置文件: <?php return array( 'thrift_command' => 'thrift --gen {gen} -out "{out}" "{idl}"', 'projects' => array( 'cms-exmaple' => array( 'gen' => 'php', // 代码目标语言,用于 thrift 的 --gen 选项 'out' => '/path/to/output', // 代码输出目录,用于 thrift 的 --out 选项 'idl_git_url' => 'https://git-url', // IDL 是否使用了 git 管理,如果设置,则自动 pull, // 例如 https://github.com/my/thrift-idl.git 'idl_git_pre' => '/src/master', // IDL 文件的 git URL 前缀。在本例中: // 假设 idl_git_url 为 https://github.com/my/thrift-idl.git // IDL 路径为 /path/to/cms.thrift,idl_root_path 为 /root/thrift/idl // 则 git 的全路径为 https://github.com/my/thrift-idl/src/master/path/to/cms.thrift // 对应的本地路径为 /root/thrift/idl/path/to/cms.thrift 'idl_root_path' => '/path/to/idl', // IDL 根目录,与 idls 拼接,如果有 git,此目录应当设置为 git 的根目录(含 .git 的目录) 'idls' => array( // IDL 所在的目录或文件 '/path/to/idl/1', '/path/to/idl/2', ), ), ), ); * * Author: https://github.com/heiing * Date: 2015-03-06T11:06+08:00 */ define("VERSION", "0.1.0"); function usage($self, $ln = PHP_EOL) { echo "Usage: {$self} project-name config-file [idl-git-url]{$ln}"; echo "project-name Project name{$ln}"; echo "config-file Config file path{$ln}"; echo "idl-git-url IDL git url{$ln}"; echo "{$ln}"; echo "config-file example: {$ln}"; echo "<?php{$ln}"; echo "{$ln}"; echo "return array({$ln}"; echo " 'thrift_command' => 'thrift --gen {gen} -out \"{out}\" \"{idl}\"',{$ln}"; echo " 'projects' => array({$ln}"; echo " 'cms-exmaple' => array({$ln}"; echo " 'gen' => 'php', // 代码目标语言,用于 thrift 的 --gen 选项{$ln}"; echo " 'out' => '/path/to/output', // 代码输出目录,用于 thrift 的 --out 选项{$ln}"; echo " 'idl_git_url' => 'https://git-url', // IDL 是否使用了 git 管理,如果设置,则自动 pull,{$ln}"; echo " // 例如 https://github.com/my/thrift-idl.git{$ln}"; echo " 'idl_git_pre' => '/src/master', // IDL 文件的 git URL 前缀。在本例中:{$ln}"; echo " // 假设 idl_git_url 为 https://github.com/my/thrift-idl.git{$ln}"; echo " // IDL 路径为 /path/to/cms.thrift,idl_root_path 为 /root/thrift/idl{$ln}"; echo " // 则 git 的全路径为 https://github.com/my/thrift-idl/src/master/path/to/cms.thrift{$ln}"; echo " // 对应的本地路径为 /root/thrift/idl/path/to/cms.thrift{$ln}"; echo " 'idl_root_path' => '/path/to/idl', // IDL 根目录,与 idls 拼接,如果有 git,此目录应当设置为 git 的根目录(含 .git 的目录){$ln}"; echo " 'idls' => array( // IDL 所在的目录或文件{$ln}"; echo " '/path/to/idl/1',{$ln}"; echo " '/path/to/idl/2',{$ln}"; echo " ),{$ln}"; echo " ),{$ln}"; echo " ),{$ln}"; echo ");{$ln}"; echo "// -------- end of config-file{$ln}"; echo "{$ln}"; echo "usage example:{$ln}"; echo "1. {$self} cms-example /root/cthrift/config.php{$ln}"; echo "2. {$self} cms-example /root/cthrift/config.php https://github.com/my/thrift-idl/src/master/cms.thrift{$ln}"; echo "{$ln}"; echo "GOOD LUCK{$ln}"; echo "{$ln}"; exit(1); } function error($message, $ln = PHP_EOL) { echo "Error: {$message}{$ln}"; exit(1); } function info($message, $ln = PHP_EOL) { echo "{$message}{$ln}"; } function config($name, $value = null) { static $pool = array(); if ($value === null) { return isset($pool[$name]) ? $pool[$name] : null; } $pool[$name] = $value; } function retend_config($name, $value) { if (!is_array($value) || is_numeric(implode('', array_keys($value)))) { return config($name, $value); } foreach ($value as $n => $v) { retend_config($name . '/' . $n, $v); } } function load_config() { $file = config('/config-file'); info('load config: ' . $file); if (!is_file($file)) { error('Config file not exists!'); } $configs = include $file; if (!isset($configs['projects'])) { error('Invalid config!'); } if (!isset($configs['projects'][config('/project-name')])) { error('Project not set!'); } foreach ($configs as $name => $value) { if (!is_array($value)) { config($name, $value); } else { retend_config($name, $value); } } } function do_command($cmd, $argv, $exit_on_error = true) { foreach ($argv as $name => $value) { $cmd = str_replace('{' . $name . '}', $value, $cmd); } info($cmd); $ret = 0; passthru($cmd, $ret); if ($ret !== 0 && $exit_on_error) { error('faild!'); } return $ret; } function process_project() { $pre = 'projects/' . config('/project-name'); $out = config("{$pre}/out"); if (null === ($cmd = config('thrift_command'))) { $cmd = 'thrift --gen {gen} ' . ($out ? '--out {out} ' : '') . ' {idl}'; } if (null === ($gen = config("{$pre}/gen"))) { error('gen not set!'); } if (null === ($path = config("{$pre}/idl_root_path"))) { error('idl_root_path not set!'); } if (!is_dir($path)) { error('idl_root_path not exists!'); } $path = rtrim($path, '/\\'); $git = rtrim(config("{$pre}/idl_git_url"), '/'); if (!empty($git)) { do_command("cd {$path}; git pull;", array(), true); } if (null !== ($url = config('/idl-git-url'))) { $git = (strtolower(substr($git, -4)) === '.git' ? substr($git, 0, -4) : $git) . config("{$pre}/idl_git_pre"); if ($git !== substr($url, 0, strlen($git))) { error('Invalid git url!'); } $idls = array(substr($url, strlen($git))); } else if (null === ($idls = config("{$pre}/idls")) || empty($idls)) { error('idls not set or empty!'); } foreach ($idls as $idl) { $idl = "{$path}{$idl}"; if (is_dir($idl)) { $idl_files = glob("{$idl}/*.thrift"); } else if (is_file($idl)) { $idl_files = array($idl); } else { info("Not Found: {$idl}"); continue; } foreach ($idl_files as $file) { do_command($cmd, array( 'gen' => $gen, 'out' => $out, 'idl' => $file, ), true); } } } function run($argv) { info("Thrift Creator " . VERSION); if (!isset($argv[2])) { usage($argv[0]); } config('/config-file', $argv[2]); config('/project-name', $argv[1]); if (isset($argv[3])) { config('/idl-git-url', $argv[3]); } load_config(); process_project(); info('DONE.'); } run($argv);

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Cutting est un outil de montage vidéo doté de fonctions d'édition complètes, d'une prise en charge de la vitesse variable, de divers filtres et effets de beauté, ainsi que de riches ressources de bibliothèque musicale. Dans ce logiciel, vous pouvez éditer des vidéos directement ou créer des scripts de montage, mais comment faire ? Dans ce tutoriel, l'éditeur présentera la méthode d'édition et de création de scripts. Méthode de production : 1. Cliquez pour ouvrir le logiciel d'édition sur votre ordinateur, puis recherchez l'option « Script de création » et cliquez pour ouvrir. 2. Dans la page du script créatif, saisissez le « titre du script », puis saisissez une brève introduction au contenu du tournage dans le plan. 3. Comment puis-je voir l'option « Description du storyboard » dans le plan ?

Comment exécuter le fichier .sh sur le système Linux ? Dans les systèmes Linux, un fichier .sh est un fichier appelé script Shell, utilisé pour exécuter une série de commandes. L'exécution de fichiers .sh est une opération très courante. Cet article explique comment exécuter des fichiers .sh dans les systèmes Linux et fournit des exemples de code spécifiques. Méthode 1 : utiliser un chemin absolu pour exécuter un fichier .sh Pour exécuter un fichier .sh dans un système Linux, vous pouvez utiliser un chemin absolu pour spécifier l'emplacement du fichier. Voici les étapes spécifiques : Ouvrez le terminal

Que faire avec le code d'écran bleu 0x0000001. L'erreur d'écran bleu est un mécanisme d'avertissement en cas de problème avec le système informatique ou le matériel. Le code 0x0000001 indique généralement une panne de matériel ou de pilote. Lorsque les utilisateurs rencontrent soudainement une erreur d’écran bleu lors de l’utilisation de leur ordinateur, ils peuvent se sentir paniqués et perdus. Heureusement, la plupart des erreurs d’écran bleu peuvent être dépannées et traitées en quelques étapes simples. Cet article présentera aux lecteurs certaines méthodes pour résoudre le code d'erreur d'écran bleu 0x0000001. Tout d'abord, lorsque nous rencontrons une erreur d'écran bleu, nous pouvons essayer de redémarrer

Le dernier théorème de Fermat, sur le point d'être conquis par l'IA ? Et la partie la plus significative de tout cela est que le dernier théorème de Fermat, que l’IA est sur le point de résoudre, vise précisément à prouver que l’IA est inutile. Autrefois, les mathématiques appartenaient au domaine de l’intelligence humaine pure ; aujourd’hui, ce territoire est déchiffré et piétiné par des algorithmes avancés. Image Le dernier théorème de Fermat est une énigme « notoire » qui intrigue les mathématiciens depuis des siècles. Cela a été prouvé en 1993, et les mathématiciens ont désormais un grand projet : recréer la preuve à l’aide d’ordinateurs. Ils espèrent que toute erreur logique dans cette version de la preuve pourra être vérifiée par un ordinateur. Adresse du projet : https://github.com/riccardobrasca/flt

Titre : En savoir plus sur PyCharm : Un moyen efficace de supprimer des projets Ces dernières années, Python, en tant que langage de programmation puissant et flexible, a été privilégié par de plus en plus de développeurs. Dans le développement de projets Python, il est crucial de choisir un environnement de développement intégré efficace. En tant qu'environnement de développement intégré puissant, PyCharm fournit aux développeurs Python de nombreuses fonctions et outils pratiques, notamment la suppression rapide et efficace des répertoires de projet. Ce qui suit se concentrera sur la façon d'utiliser la suppression dans PyCharm

PyCharm est un puissant environnement de développement intégré Python qui fournit une multitude d'outils de développement et de configurations d'environnement, permettant aux développeurs d'écrire et de déboguer du code plus efficacement. Lors du processus d'utilisation de PyCharm pour le développement de projets Python, nous devons parfois regrouper le projet dans un fichier EXE exécutable pour l'exécuter sur un ordinateur sur lequel aucun environnement Python n'est installé. Cet article explique comment utiliser PyCharm pour convertir un projet en fichier EXE exécutable et donne des exemples de code spécifiques. tête

Si vous devez programmer un appareil à distance, cet article vous aidera. Nous partagerons les meilleurs codes de télécommande universelle GE pour programmer n’importe quel appareil. Qu'est-ce qu'une télécommande GE ? GEUniversalRemote est une télécommande qui peut être utilisée pour contrôler plusieurs appareils tels que les téléviseurs intelligents, LG, Vizio, Sony, Blu-ray, DVD, DVR, Roku, AppleTV, lecteurs multimédias en streaming et plus encore. Les télécommandes GEUniversal sont disponibles en différents modèles avec différentes caractéristiques et fonctions. GEUniversalRemote peut contrôler jusqu'à quatre appareils. Les meilleurs codes de télécommande universels à programmer sur n'importe quel appareil. Les télécommandes GE sont livrées avec un ensemble de codes qui leur permettent de fonctionner avec différents appareils. vous pouvez

Nous avons conçu ce didacticiel de script Windows PowerShell pour les débutants, que vous soyez un passionné de technologie ou un professionnel cherchant à améliorer vos compétences en matière de script. Si vous n'avez aucune connaissance préalable des scripts PowerShell, cet article commencera par les bases et sera adapté à vos besoins. Nous vous aiderons à maîtriser les étapes d'installation d'un environnement PowerShell et vous guiderons à travers les principaux concepts et fonctionnalités des scripts PowerShell. Si vous êtes prêt à en savoir plus sur les scripts PowerShell, embarquons ensemble dans ce passionnant voyage d'apprentissage ! Qu’est-ce que WindowsPowerShell ? PowerShell est un système de commande hybride développé par Microsoft
